我有一个 UIViewController
,我的 Logo 居中,UITableView
的 alpha 为 0。
在 viewDidAppear:
我有这个:
[UIView animateWithDuration:0.6 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{
[self.logo setFrame:CGRectMake(0.0f, self.view.frame.size.height - 194.0f, 320.0f, 194.0f)];
} completion:^(BOOL finished) {
[self.table setFrame:CGRectMake(0.0f, 0.0f, 320.0f, self.view.frame.size.height - 194.0f)];
[UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{
[self.table setAlpha:1.0];
} completion:^(BOOL finished) {
return;
}];
return;
}];
好的,动画就是我想要的。
但是当我调用 presentModalViewController:
显示下一个 View 时,UIImageView
回到屏幕中心,UITableView
回到之前的高度。
如何在完成动画后保持相同的大小和位置,甚至改变 View ?
谢谢。
最佳答案
我假设您在 viewDidLoad
中设置了原始帧,这很好,除非模态清除了您的系统内存。 View 会尽可能长时间地缓存。因此,如果您的模式使用了足够的内存来重置它,viewDidLoad
将再次调用以重置您的 View 。
处理此问题的一种快速简便的方法是在 dismissViewController:animated:
方法中设置您想要的值(如果您正在使用它),或者为模态设置一个委托(delegate)方法。
如果您没有其中任何一个,则需要以某种方式检查这是否是第一次加载。但这不是处理它的干净方法。如果您展示更多代码,我们可能会找到更好的解决方案。
关于ios - viewDidAppear 上的动画 UIImageView 和 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935322/