gpt4 book ai didi

ios - subview 在动画期间未正确定位

转载 作者:可可西里 更新时间:2023-11-01 03:56:15 25 4
gpt4 key购买 nike

我有一个简单的动画,其中我从旧 View 的中心展开一个新 View ,同时那个 View 淡出。然而,随着新 View 扩展到占据整个屏幕,这个新 View 的 subview (一个按钮和一个标签)从屏幕的右下角“飞”进来。我试过打开和不打开自动布局,虽然这两种情况给出了不同的结果,但它们都是错误的。

设置很简单,我在 Storyboard中有两个未连接的 View Controller ,并使用以下代码为 View 更改设置动画:

-(void)switchViews2:(id)sender {
UIWindow *win = self.view.window;
YellowController *yellow = [self.storyboard instantiateViewControllerWithIdentifier:@"Yellow"];
yellow.view.frame = CGRectMake(0, 0, 1, 1);
yellow.view.center = self.view.center;
[win addSubview:yellow.view];
CGRect frame = self.view.frame;
[UIView animateWithDuration:5 animations:^{
yellow.view.frame = frame;
self.view.alpha = 0;
}
completion:^(BOOL finished) {
[self.view removeFromSuperview];
win.rootViewController = yellow;
}];
}

问题是,为什么 subview 在动画时不停留在父 View 中它们应该在的位置。

最佳答案

要使 subview 就位,特别是在使用自动布局时,为变换属性而不是框架设置动画要简单得多。这样, subview 的 bounds 属性就不会改变,所以它不会觉得需要在动画期间一直中继它的 subview 。

添加带有最终帧的 subview ,将其变换设置为缩放仿射变换,例如 0.1,然后将其动画化为恒等变换。它将从中心点长出,所有 subview 都在正确的位置。

关于ios - subview 在动画期间未正确定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13889673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com