更新
动画适用于setEnabled=NO
。
setEnabled=YES
正在滚动时触发UIScrollView
的动画,UIButton
位于滚动视图内,setEnabled=NO
的动画在UIScrollView
时被触发滚动完成。
所以,我认为setEnabled=YES
的动画不起作用的原因是视图正在移动。我不确定,但这似乎是迄今为止我发现的唯一合乎逻辑的解释。我使用dispatch_after()
进行了测试,动画也适用于setEnabled
,换句话说,如果在视图不移动时触发动画,则动画正在工作。
我需要做什么?
我有两个不同的背景图片,UIButton
一个用于UIControlStateNormal
,另一个用于UIControlStateDisabled
。
我想要一个UIButton从一个状态缓慢转换到另一个状态的效果
我一直在做什么?
BOOL enableDisable = YES;
[UIView transitionWithView:((UIButton*)object)
duration:3.3
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{ [((UIButton*)object) setEnabled:enableDisable]; }
completion:nil];
问题
UIButton在整个持续时间内转换为setEnabled=NO
状态,但无论我在options
setEnabled
放置的内容几乎立即发生。
有什么我想念的吗?
提前感谢您的时间和回应。
答案 0 :(得分:4)
不幸的是,UIView
的启用或禁用状态不是Apple文档中可设置动画的属性的一部分。动画属性是:
frame, center, bounds, transform, alpha, backgroundColor, contentStretch
参考此处:UIView animation
但是,如果要为动画创建自定义属性,可以查看此帖子,其中介绍了实现它的方法。 Create a custom animatable property
答案 1 :(得分:0)
我可以确认您的代码是否按预期运行
已启用:否 - >是
和过渡
已启用:是 - > NO
所以,我的猜测是你的应用程序中发生了一些其他事情干扰了转换。尝试定义完成块,如:
...
completion:^(BOOL finished) {
NSLog(@"FINISHED? %@", finished?@"YES":@"NO");
} ];
并在transitionWith
调用之前或动画块内添加跟踪日志,以检查转换从开始到完成的运行时间。
我的猜测是,当按钮正在转换时,正在发生的其他事情会改变其状态,并且作为辅助效果会打破转换。我担心如果没有看到更多的代码,就无法再帮助你了......