Objective c 设置两个视图的动画时出现的问题

Objective c 设置两个视图的动画时出现的问题,objective-c,animation,uiviewanimation,Objective C,Animation,Uiviewanimation,所以我想要的是,当用户点击sideNav按钮时,会出现两个不同的动画。当前视图将滑出控制器,新视图将滑入。我为视图设置了两个不同的动画点,但由于某种原因,当用户点击sideNav按钮时,视图会移动,就好像它们是连接在一起的一样。我做错了什么 - (IBAction)sideNav:(id)sender { if (draw1 == 0) { draw1 = 1; [UIView beginAnimations:nil context:nil];

所以我想要的是,当用户点击sideNav按钮时,会出现两个不同的动画。当前视图将滑出控制器,新视图将滑入。我为视图设置了两个不同的动画点,但由于某种原因,当用户点击sideNav按钮时,视图会移动,就好像它们是连接在一起的一样。我做错了什么

- (IBAction)sideNav:(id)sender {

    if (draw1 == 0) {
        draw1 = 1;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.4];
        [UIView setAnimationDelay:0.0];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

        navView.frame = CGRectMake(0, 0, 320, 568);
        newsView.frame = CGRectMake(320, 0, 320, 568);

        [UIView commitAnimations];
    } else {
        draw1 = 0;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.4];
        [UIView setAnimationDelay:0.0];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

        navView.frame = CGRectMake(-320, 0, 320, 568);
        newsView.frame = CGRectMake(0, 0, 320, 568);

        [UIView commitAnimations];

    }

}

回答问题的一个步骤是简化代码。首先,除非它在其他地方用作整数,
draw1
应该是
BOOL
,值为
YES
NO
。其次,不需要所有相同的重复代码。更容易理解以下内容:

- (IBAction)sideNav:(id)sender {

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.4];
    [UIView setAnimationDelay:0.0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

    navView.frame = draw1 ? CGRectMake(-320, 0, 320, 568) : CGRectMake(0, 0, 320, 568);
    newsView.frame = draw1 ? CGRectMake(0, 0, 320, 568) : CGRectMake(320, 0, 320, 568);

    [UIView commitAnimations];

    draw1 = !draw1;
}

添加断点以查看调用
sideNav:
的次数。如果不小心调用了两次,则会同时完成两个动画,因为您正在立即设置
draw1
标志。是否希望第一个视图移出屏幕,并在完成后滑入第二个视图?或者你想同时做这两个动画?谢谢特拉维斯!我试试看。我希望他们两个同时制作动画。我希望newsView滑出屏幕,navView滑入屏幕。但是navView幻灯片与newsView脱离屏幕,就好像它与之相连一样。但我希望它们是两个独立的动画。好的!我解决了这个问题。我将navView作为newsView的子视图,这就是为什么它会随之移动。谢谢你的帮助!