0

我在情节提要中有两个视图控制器,它们由 segue 链接。第一个 View Controller 做了一个动画,它将 UIImage 从屏幕中间滑到顶部,然后显示一个 UIButton,一切都很好。但是,当按钮被触摸时,我会执行一个 segue,在模态框上显示第二个视图控制器。但是当第二个视图控制器向上滑动屏幕时,我可以看到 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 正在从情节提要加载第一个视图控制器吗?如何在视图控制器之间来回转换,使图像保持动画后的状态?

4

1 回答 1

4

这可能是由于自动布局。当您在启用自动布局的情况下更改框架时,任何其他需要系统重新布局视图的操作都会导致框架恢复为约束定义的框架。因此,您应该关闭自动布局,或者通过修改布局约束来更改原点。当你使用自动布局时,你不应该做任何框架设置,只修改约束。

于 2013-08-02T04:59:01.810 回答