我有一个UIViewController
,我的徽标居中,UITableView
,其中alpha为。
在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:
以显示下一个视图时,UIImageView
返回屏幕中心,UITableView
返回之前的高度。
完成动画后如何保持相同的大小和位置,甚至更改视图?
感谢。
答案 0 :(得分:1)
我假设您在viewDidLoad
中设置了原始帧,除非模态清除系统内存,否则这很好。只要可以,就会缓存视图。因此,如果模态使用足够的内存来重置它,则会再次调用viewDidLoad
重置视图。
一种快速简便的方法是在dismissViewController:animated:
方法中设置所需的值(如果您正在使用它),或者为模态设置委托方法。
如果你没有其中任何一个,你需要做一些检查,如果这是第一次加载。虽然这不是一个干净的方式来处理它。如果您展示更多代码,我们可能会找到更好的解决方案。
答案 1 :(得分:0)
注意:你使用了错误的选项常量。而不是UIViewAnimationCurveEaseInOut
,应该使用UIViewAnimationOptionCurveEaseInOut
。这可能不会影响你的问题,但这很糟糕。
此外,您的完成块中不需要return
个语句。
我会检查viewWillDisappear和viewDidDisappear方法中的代码。您可能正在那里(或甚至在layoutSubviews中)进行初始布局,这将重置视图。