UIButtons 不会在动画块期间淡出
Posted
技术标签:
【中文标题】UIButtons 不会在动画块期间淡出【英文标题】:UIButtons will not fade out during animation block 【发布时间】:2012-01-14 14:03:44 【问题描述】:我有一组 UIButtons 和 UILabels 我想在选择一个按钮并且它是正确的按钮时淡出。
我已经尝试了很多东西(在代码块中对它们进行了注释),只有 UILabel 淡出。我在这里错过了什么?
-(IBAction)answerButtonPressed:(UIButton *)sender
NSLog(@"Game Question Answer Pressed: %i", sender.tag);
NSLog(@"%@", sender.titleLabel.text);
int selectedAnswer =0;
selectedAnswer = [question.answer intValue];
if (selectedAnswer == sender.tag)
NSLog(@"GameQ %@ is the correct answer", sender.titleLabel.text);
//self.toggleView;
[labelA setAlpha:0];
[labelB setAlpha:0];
[labelC setAlpha:0];
[labelD setAlpha:0];
/*
[buttonA setAlpha:0];
[buttonB setAlpha:0];
[buttonC setAlpha:0];
[buttonD setAlpha:0];
[buttonA setHidden:YES];
[buttonB setHidden:YES];
[buttonC setHidden:YES];
[buttonD setHidden:YES];
*/
[sender setAlpha:1];
[sender setHidden:NO];
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
[UIView animateWithDuration:2.0
delay:0.0
options: UIViewAnimationCurveEaseOut
animations:^buttonA.alpha = 0;
completion:nil];
[UIView setAnimationDelegate:[UIApplication sharedApplication]];
[UIView setAnimationDidStopSelector:@selector(endIgnoringInteractionEvents)];
[UIView commitAnimations];
我已经清理了这个方法并且只使用了一种类型的动画块。 UIButton 仍然不会淡出,但标签会淡出。这是我的动画块:
[UIView animateWithDuration:2.0
delay:0.0
options: UIViewAnimationCurveEaseOut
animations:^buttonA.alpha = 0;
completion:nil];
[UIView animateWithDuration:2.0
delay:0.0
options: UIViewAnimationCurveEaseOut
animations:^labelA.alpha = 0;
completion:nil];
【问题讨论】:
【参考方案1】:我会立即注意到一些事情。您正在结合两种类型的动画技术。新旧:
要么做:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.5];
buttonA.alpha = 0;
[UIView commitAnimations];
OR(并且首选,因为它是“现代”方式)
[UIView animateWithDuration:2.0
delay:0.0
options: UIViewAnimationCurveEaseOut
animations:^buttonA.alpha = 0;
completion:nil];
如您所见,将两者结合起来可能会导致块被多次调用,因为第一个动画技术插入了第二个动画技术。基本上,将许多动画放入队列中,非常快地将按钮淡化为 0。
此外,默认情况下(至少使用块)默认情况下禁用用户交互。不需要明确地这样做。
【讨论】:
我已经清理了该方法,并采纳了您建议使用更“现代”的方法。按钮仍然存在,但标签像以前一样消失了。一定有什么东西是压倒一切的?请在最初的帖子中查看我的编辑。 您不需要多个块来处理您希望更改的所有内容。你可以把你的 labelA.alpha =0;你的 buttonA.alpha = 0;在同一个街区。您确定已将 buttonA 连接到界面生成器中的按钮实例吗? IE。现在是零吗? 哈哈,我真是个白痴。是的,因为我正在向 ID 发送者发送消息,所以我不需要连接我的参考插座。现在我需要向视图发送消息,我检查了一下,笔尖没有接线。以上是关于UIButtons 不会在动画块期间淡出的主要内容,如果未能解决你的问题,请参考以下文章
用于 ipad 的 UITableViewCell 中的 UIButtons