好的,所以我选择使用 block 动画为我的标签设置动画。
逻辑很简单,我有一个由按钮组成的图表栏,当按钮被按下时,它会创建一个没有宽度的标签,然后用同样的方法,动画开始加长标签,这样的话里面的标 checkout 来了,然后在短暂的 2.5 秒延迟后,标签再次收缩并从 superview 中移除。
问题是:
延迟在 OS 4.3 中正常工作。 动画按预期工作,显示标签,在 2.5 之后触发下一个动画并关闭标签。
延迟在 OS 5.0 中被忽略。 第一个动画完成后,它没有等待延迟,而是立即触发下一个动画 block 。
这是我的一些关于动画的代码:
UILabel *lbl = [self createLabelWithText:numString frame:CGRectMake(touchPoint.x, touchPoint.y, 0, 10) bold:YES font:@"Helvetica" fontSize:10 color:[UIColor whiteColor] textAlignment:UITextAlignmentLeft andTag:987];
[lbl setBackgroundColor:[UIColor blackColor]];
[lbl setAlpha:0.5];
[self.view addSubview:lbl];
[UIView animateWithDuration:0.3 animations:^
{
[lbl setFrame:lblRect];
}completion:^(BOOL finished)
{
[UIView animateWithDuration:0.2 delay:2.5 options:UIViewAnimationOptionCurveEaseInOut animations:^
{//here the second animation delay run properly on 4.3 , but ignored at 5.0
[lbl setFrame:CGRectMake(touchPoint.x, touchPoint.y, 0, 10)];
}completion:^(BOOL finished) {
[lbl removeFromSuperview];
}];
}];
预先感谢您的帮助!
编辑:如果你们有人想知道为什么这个人没有搜索谷歌或其他 stackoverflow 问题,事实上,我搜索了,遗憾的是我找到的所有帖子都没有为我提供我需要的答案。 :(
最佳答案
好的,我找到问题了。这不完全是 block 动画的错,而是因为我将动画设置为将 uilabel 缩小到宽度“0”而发生的错误。结果出现在 IOS 5.0(至少在我的项目中),因为我通过使用约束设置标签大小,当我试图缩小标签时,一旦它读取标签不足以显示整个文本,它会立即终止标签本身。
关于iphone - block 动画延迟在 OS 4.3 上工作正常但在 5.0 上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10492879/