我在故事板中有两个由segue链接的视图控制器。第一个视图控制器执行一个动画,它从屏幕的中间到顶部滑动UIImage,然后显示一个UIButton,一切都很好。但是,当触摸按钮时,我执行一个segue,在模态上显示第二个视图控制器。但是当第二个View控制器向上滑动屏幕时,我可以看到UIImage返回到屏幕中间,就像动画之前一样。
就是这样:
- (void)viewDidLoad{
[super viewDidLoad];
self.willAnimate=YES;
}
- (void)viewDidAppear:(BOOL)animated{
if (self.willAnimate) [self animate];
}
- (void) animate{
if (self.willAnimate){
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.8];
//hide button first
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.1];
self.myButton.alpha=0;
[UIView commitAnimations];
//move background
CGRect imgRect = self.myImageView.frame;
imgRect.origin.y-=200;
self.myImageView.frame=backgroundRect;
//restore button
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelay:1.8];
self.myButton.alpha=1;
[UIView commitAnimations];
[UIView commitAnimations];
self.willAnimate=NO;
}
}
- (IBAction)myButtonPressed {
[self performSegueWithIdentifier:@"mySegue" sender:self ];
}
这是否发生是因为segue正在从故事板加载第一个View Controller?如何在视图控制器之间来回切换,使图像保持在动画之后?
答案 0 :(得分:4)
这可能是由于自动布局造成的。在启用自动布局的情况下更改框架时,需要系统重新布局视图的任何其他操作都会导致框架恢复到约束定义的框架。因此,您应该关闭自动布局,或者通过修改布局约束来更改原点。使用自动布局时,不应进行任何帧设置,只能修改约束。