我几乎没有回应相同动画的子视图。我希望在动画完成后删除子视图(animationDidStop)。是一种检测在animationDidStop中动画的子视图的方法吗?
在这种特殊情况下:
if ([animationID isEqualToString:@"myAnimation"])
view.removeSubView:myView;
如果是正确的子视图你怎么样?,因为我之前说过一些子视图回应同一个动画。
答案 0 :(得分:3)
您可以为动画命名(每个视图都需要一个唯一的动画名称):
[UIView beginAnimations:@"myAnimation" context:nil];
myView.alpha = 1.0f; // or whatever property you're animating...
[UIView commitAnimations];
然后在
中检索此名称- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(id)context
{
if ([finished boolValue])
{
if ([animationID isEqualToString:@"myAnimation"])
[myView removeFromSuperview];
}
}
或者更好的是,使用iOS4 +块动画方法及其完成处理程序,您将能够更加干净地引用正在完成处理程序中的动画视图。例如
[UIView animateWithDuration:0.4f animations:^
{
myView.alpha=1.0f;
}
completion:^(BOOL finished)
{
[myView removeFromSuperview];
}];