Iphone 我的核心动画块不是';我不能像我一样工作;我希望
我有一个名为Iphone 我的核心动画块不是';我不能像我一样工作;我希望,iphone,animation,uiview,core-animation,Iphone,Animation,Uiview,Core Animation,我有一个名为activityView的ui视图,它包含两个子视图activityIndicator和取消操作按钮。这些视图嵌入到XIB中,并连接到我的视图控制器 我有两种方法来处理激活(显示)和停用(隐藏)这两个子视图: - (void) enableActivityIndicator { [activityIndicator startAnimating]; [cancelOperationsButton setHidden:NO]; } - (void) disableAc
activityView
的ui视图,它包含两个子视图activityIndicator
和取消操作按钮
。这些视图嵌入到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];
}
在“启用”中,将视图设置为“在设置为不透明动画之前清除”
- (void) enableActivityIndicator {
...
activityView.alpha = 0.0f;
[cancelOperationsButton setHidden:NO];
...
在“禁用”中,在动画完成之前不要隐藏视图
- (void) disableActivityIndicator {
...
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(hideComplete)];
...
- (void) hideComplete {
[activityIndicator stopAnimating];
[cancelOperationsButton setHidden:YES];
}