2013-12-09 45 views
0

所以我想要的是當用戶點擊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]; 

    } 

} 
+0

添加一個斷點來查看調用了多少次'sideNav:'。如果偶然被調用兩次,那麼您將同時獲得兩個動畫,因爲您立即設置了draw1標誌。 –

+0

你想讓第一個視圖離開屏幕,一旦完成後你想讓第二個視圖滑入?或者你想同時做兩個動畫? – Greg

+0

謝謝特拉維斯!我會試一試。 我希望它們同時具有動畫效果。我想讓newsView滑出屏幕,並使navView在屏幕上滑動。但navView幻燈片與newsView一起關閉屏幕,就好像它與它連接一樣。但我希望它們是兩個獨立的動畫。 – user2605157

回答

2

回答你的問題的一步就是簡化你的代碼。首先,除非在其他地方作爲整數使用,否則draw1應該是BOOL,值爲YESNO。其次,不需要所有相同的重複代碼。這很容易理解,例如:

- (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; 
}