【问题标题】:Color Animation of UILabel in swiftswift中UILabel的彩色动画
【发布时间】:2016-03-20 12:29:21
【问题描述】:

我想要一个 UILabel 填充屏幕宽度并且颜色为红色的设置。当点击按钮时,我希望红色标签移到屏幕右侧,同时从屏幕左侧进入绿色的 UILabel。

我能想到的唯一方法是拥有两个不同的 UILabel 并为它们设置动画以在屏幕上移动和移动。

我是否可以只使用一个 UILabel 但固定在屏幕上并在该 UILabel 中设置颜色变化动画,这样看起来红色已从屏幕右侧移出,而绿色已从左侧移到屏幕上?

【问题讨论】:

    标签: ios swift animation core-animation uicolor


    【解决方案1】:

    据我所知,您需要使用两个单独的标签。以下是制作动画的方法:

    您可以将绿色标签放在屏幕上与红色标签相同的约束条件下,然后首先将其设置为离屏(在 viewDidLoad 中运行此代码):

    playAgainButton.center = CGPointMake(playAgainButton.center.x - 500, playAgainButton.center.y)
    

    在我看来,您希望红色标签从屏幕上移到屏幕左侧,而绿色标签从屏幕外移到屏幕左侧...这是动画:

    UIView.animateWithDuration(0.5, animations: { () -> Void in
    
            self.redLabel.center = CGPointMake(self.redLabel.center.x + 500, self.redLabel.center.y)
    
            self.greenLabel.center = CGPointMake(self.redLabel.center.x + 500, self.greenLabel.center.y)
    
        })
    

    你总是可以用动画来改变持续时间(我把它设置为 0.5 秒)

    希望这会有所帮助!

    【讨论】:

    • Hi Dan 对动画的帮助会很棒。我有生成标签背景颜色的代码,但不确定如何为它们设置动画。我需要动画从红色变为绿色,从屏幕右侧移出 10 次。谢谢。
    • 当然!我可以在几个小时内将其发送给您
    • @PeterGaffney 我编辑了我的答案!如果您还需要什么,请告诉我!
    • 如果您使用的是 AutoLayout(默认),那么直接为视图的位置设置动画效果并不可靠。一旦你做了一些触发布局更新的事情,视图就会迅速回到原来的位置。相反,您需要将约束连接为出口,并对约束的更改进行动画处理。
    【解决方案2】:

    这可能,但您的绿色标签只有在红色移出视图后才能看到,因为我们正在尝试使用相同的 UILabel。你可以使用 UIView animateWithDuration 来做到这一点。您需要使用 Frame 来处理约束。首先,您需要从左到右为您的标签设置动画,直到它移动到屏幕上,并在完成块中将其框架重置到最左端并将其从左到右移动到屏幕上。 只需检查以下显示和隐藏视图的动画:

    https://github.com/quantumarun/BottomUp-Animation

    【讨论】:

    • 谢谢你的答案,将你的答案和dans的答案结合起来就是工作:)
    猜你喜欢
    • 1970-01-01
    • 2011-07-15
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多