首页 文章

用于UILabel的setAlpha动画无法正常工作

提问于
浏览
0

我在视图上有一些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,但这似乎是一个可怕的解决方案 .

3 回答

  • 0

    问题是 textColor 属性不可动画 . 如果您的标签与其底层视图的颜色不同,您会看到它在动画发生时变得透明 . 要为文本颜色的更改设置动画,您应该使用CATextLayer而不是UILabel . 比你可以动画更改它 foregroundColour 属性 .

    这是一个关于这个的好教程http://corecocoa.wordpress.com/2011/10/04/animatable-text-color-of-uilabel/

  • 0

    对我有用的唯一解决方案是将UILabel置于UIView内,并为UIView代替UILabel的alpha(或仅bg颜色,取决于你需要的)设置动画 .

  • 1

    快速修复:使用 animateWithDuration 方法而不是 transitionWithView 进行Alpha转换 .

相关问题