rde*_*mar 6 uiviewanimation ios
我有一个简单的动画,我正在从旧的中心扩展一个新视图,而那个视图淡出.但是,当新视图扩展为占据整个屏幕时,此新视图(按钮和标签)的子视图从屏幕右下方"飞入".我已尝试使用和不使用autolayout,虽然这两种情况给出了不同的结果,但它们都是错误的.
设置很简单,我在故事板中有两个未连接的视图控制器,并使用以下代码为视图更改设置动画:
-(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;
}];
}
Run Code Online (Sandbox Code Playgroud)
问题是,为什么子视图不会停留在超级视图内的位置,因为它会动画.
要将子视图放置到位,特别是在使用自动布局时,为变换属性而不是框架设置动画要简单得多。这样,子视图的边界属性不会改变,因此在动画过程中不需要一直中继其子视图。
添加子视图及其最终帧,将其变换设置为缩放仿射变换,例如 0.1,然后将其动画化为恒等变换。它将从中心点开始生长,所有子视图都位于正确的位置。
| 归档时间: |
|
| 查看次数: |
1820 次 |
| 最近记录: |