【发布时间】:2010-04-29 04:30:03
【问题描述】:
我有一个名为activityView 的UIView,其中包含两个子视图activityIndicator 和cancelOperationsButton。这些视图嵌入在 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];
}
【问题讨论】:
标签: iphone animation uiview core-animation