2010-04-29 28 views
1

我有一個叫activityViewUIView,它包含兩個子視圖activityIndicatorcancelOperationsButton。這些視圖嵌入XIB並連接到我的視圖控制器。我的核心動畫塊沒有像我期望的那樣工作

我有兩種方法與激活(顯示)和停用(隱藏)處理這兩個子視圖:

- (void) enableActivityIndicator { 
    [activityIndicator startAnimating]; 
    [cancelOperationsButton setHidden:NO]; 
} 

- (void) disableActivityIndicator { 
    [activityIndicator stopAnimating]; 
    [cancelOperationsButton setHidden:YES]; 
} 

通過自己,這兩種方法很好地工作。

爲了讓這個有點拋光的,我想補充一點,在進出這些淡出子視圖動畫:

- (void) enableActivityIndicator { 
    [activityIndicator startAnimating]; 
    [cancelOperationsButton setHidden:NO]; 

    [UIView beginAnimations:@"fadeIn" context:nil]; 
    [UIView setAnimationDelay:0.0f]; 
    [UIView setAnimationDuration:1.0f]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
    activityView.alpha = 1.0f; 
    [UIView commitAnimations]; 
} 

- (void) disableActivityIndicator { 
    [UIView beginAnimations:@"fadeOut" context:nil]; 
    [UIView setAnimationDelay:0.0f]; 
    [UIView setAnimationDuration:1.0f]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
    activityView.alpha = 0.0f; 
    [UIView commitAnimations]; 

    [activityIndicator stopAnimating]; 
    [cancelOperationsButton setHidden:YES]; 
} 

但是動畫不工作 - 子視圖只顯示或不消失父視圖的alpha屬性對透明度有影響。

我應該如何編寫這些方法來獲得我之後的淡入,淡出效果?

編輯

這裏有一個完美的作品安排:

- (void) enableActivityIndicator { 
    activityView.alpha = 0.0f; 
    [activityIndicator startAnimating]; 
    [cancelOperationsButton setHidden:NO]; 

    [UIView beginAnimations:@"fadeIn" context:nil]; 
    [UIView setAnimationDelay:0.0f]; 
    [UIView setAnimationDuration:0.2f]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
    activityView.alpha = 1.0f; 
    [UIView commitAnimations]; 
} 

- (void) disableActivityIndicator { 
    [UIView beginAnimations:@"fadeOut" context:nil]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(disableActivityIndicatorComplete)]; 
    [UIView setAnimationDelay:0.0f]; 
    [UIView setAnimationDuration:0.2f]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
    activityView.alpha = 0.0f; 
    [UIView commitAnimations]; 
} 

- (void) disableActivityIndicatorComplete { 
    [activityIndicator stopAnimating]; 
    [cancelOperationsButton setHidden:YES]; 
} 

回答

3

在啓用,設置視圖動畫不透明前清除。

- (void) enableActivityIndicator { 
    ... 
    activityView.alpha = 0.0f; 
    [cancelOperationsButton setHidden:NO]; 
    ... 

在禁用中,在動畫完成之前不要隱藏視圖。

​​3210
+0

完美,歡呼! – 2010-04-29 05:13:32

相關問題