UILabel 的 setAlpha 动画不起作用
Animation of setAlpha for UILabel not working
我在视图上有一些 UILabel,我想在有人按住视图时淡出。
我正在尝试通过将文本的 alpha 值从 1.0 更改为 0.5 来执行淡入淡出,然后在释放触摸时再次返回。
这是我的代码:
[UIView transitionWithView:self.view duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations: ^ {
[someImageView removeFromSuperview];
[[self someText] setAlpha:0.5];
} completion:nil];
在此块中删除的 imageView 动画效果很好,但是,文本的 alpha 更改没有动画效果,它只是在动画完成后立即发生,即当 imageView 动画并被删除时文本保持 alpha 1.0,然后当动画完成时,文本 alpha 突然从 1.0 变为 0.5,没有动画。
我是做错了还是有其他方法应该这样做?
我能想到的唯一其他方法是复制 UILabel,这样就有两个,一个 alpha 1.0,一个 alpha 0.5。然后我可以淡入淡出以隐藏原始 UILabel 并淡入半透明的 UILabel 但这似乎是一个可怕的解决方案。
问题是 textColor
属性 不可设置动画。如果您的标签与其底层视图的颜色不同,您会看到它在动画发生时变得透明。要为文本颜色的变化设置动画,您应该使用 CATextLayer 而不是 UILabel。比你可以动画改变它 foregroundColour
属性.
这是一个很好的教程
http://corecocoa.wordpress.com/2011/10/04/animatable-text-color-of-uilabel/
快速修复:使用 animateWithDuration
方法而不是 transitionWithView
进行 alpha 转换。
唯一对我有用的解决方案是将 UILabel 放在 UIView 中并为 UIView 而不是 UILabel 的 alpha(或仅 bg 颜色,取决于您的需要)设置动画。
我在视图上有一些 UILabel,我想在有人按住视图时淡出。
我正在尝试通过将文本的 alpha 值从 1.0 更改为 0.5 来执行淡入淡出,然后在释放触摸时再次返回。
这是我的代码:
[UIView transitionWithView:self.view duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations: ^ {
[someImageView removeFromSuperview];
[[self someText] setAlpha:0.5];
} completion:nil];
在此块中删除的 imageView 动画效果很好,但是,文本的 alpha 更改没有动画效果,它只是在动画完成后立即发生,即当 imageView 动画并被删除时文本保持 alpha 1.0,然后当动画完成时,文本 alpha 突然从 1.0 变为 0.5,没有动画。
我是做错了还是有其他方法应该这样做?
我能想到的唯一其他方法是复制 UILabel,这样就有两个,一个 alpha 1.0,一个 alpha 0.5。然后我可以淡入淡出以隐藏原始 UILabel 并淡入半透明的 UILabel 但这似乎是一个可怕的解决方案。
问题是 textColor
属性 不可设置动画。如果您的标签与其底层视图的颜色不同,您会看到它在动画发生时变得透明。要为文本颜色的变化设置动画,您应该使用 CATextLayer 而不是 UILabel。比你可以动画改变它 foregroundColour
属性.
这是一个很好的教程 http://corecocoa.wordpress.com/2011/10/04/animatable-text-color-of-uilabel/
快速修复:使用 animateWithDuration
方法而不是 transitionWithView
进行 alpha 转换。
唯一对我有用的解决方案是将 UILabel 放在 UIView 中并为 UIView 而不是 UILabel 的 alpha(或仅 bg 颜色,取决于您的需要)设置动画。