我想在动画完成后删除此标签。我想在touchesEnded函数中的下面代码中动画时再也看不到它。我没有看到一种方法来检查lbl.isAnimating是否已经在for循环中忽略它(没有创建我自己的UILabels列表),但我认为我的完成代码在这里可行。但是在动画结束后,如果我点击隐形标签,我仍然会陷入if块内。
for( lbl in mLabelOutletCollection ) {
if (CGRectContainsPoint([lbl frame], [touch locationInView:self.view]))
{
[UIView animateWithDuration:1.0 delay:0.0
options:(UIViewAnimationOptionAllowUserInteraction)
animations:^{
lbl.alpha = 0.0;
lbl.transform = CGAffineTransformMakeScale(1.5, 1.5);
}
completion:^(BOOL completed){
[lbl removeFromSuperview];
lbl.hidden=YES;
}
];
}
}
答案 0 :(得分:0)
覆盖
- (void)finishAnimation:(NSString *)animationId finished:(BOOL)finished context:(void *)context {
并把:
[lbl removeFromSuperview];
lbl.hidden=YES;
那里。 另外,不确定,但我不相信你需要第二行lbl.hidden;因为你已经从超级视图中删除了它。
答案 1 :(得分:0)
我通过添加bool并在循环后执行此操作来解决此问题。即使lbl被删除,它仍然存在于OutletCollection中,并记住它所在的位置。我之前尝试过这个,但是在循环中这样做会导致异常。
if ( found ) [mLabelOutletCollection removeObject:lbl];