动画 UIlabel 设置标题,即使我设置相同的字符串

Posted

技术标签:

【中文标题】动画 UIlabel 设置标题,即使我设置相同的字符串【英文标题】:Animate UIlabel set title even if i set the same string 【发布时间】:2014-02-22 19:40:41 【问题描述】:

我想为 UILabel 标题的变化制作动画,即使标题的字符串与之前的字符串相同。 我的代码:

[self.firstletterbutton setTitle:goodletter forState:UIControlStateNormal];
                [self.secondletterbutton setTitle:badletter1 forState:UIControlStateNormal];
                [self.thirdletterbutton setTitle:badletter3 forState:UIControlStateNormal];

如果我更改 UIButton 标题,它会使用“flash”进行动画处理。但是,如果我将标题更改为相同的字符串,它不会动画。如何强制动画?

【问题讨论】:

无论如何都没有动画。 title 不是动画属性。 看这个例子。 "基本的动画标签,不断从文本数组中更改其文本"code4app.net/ios/Animate-Label/5212fd426803fa5227000001 我希望,有一个更简单的解决方案。我只是不想为此编写大量代码。 【参考方案1】:

在 iOS7 之前title 没有动画,但在 iOS 7 中,他们似乎在 变化时添加了 flash 动画。一种可能性可能是先将标题设置为空白,然后再次设置为相同的值以模拟更改。如果这会导致不必要的闪烁,您还可以尝试在标题中暂时附加一些非打印字符(找到一个合适的字符作为练习留给读者)。

或者,你可以尝试做一个完全不同的过渡,例如,使用类似的东西:

[UIView transitionWithView:self.firstletterbutton duration:0.3 options:UIViewAnimationOptionTransitionFlipFromBottom animations:^
    [self.firstletterbutton setTitle:goodletter forState:UIControlStateNormal];
 completion:nil];

【讨论】:

不。如果您使用代码更改 UIButton 标题,则默认为如果使用“flash”则其动画。但是,如果我将标题更改为相同(因为随机函数给出了相同的文本,这不是问题)它不是动画。这个标题没有任何闪光。 @user3341586 你说得对,它在 iOS 7 中发生了变化。答案已更新。 我收到以下错误消息:不知道选择器'transitionWithView:duration:options:animations:'的类方法。我的代码:[[UIView transitionWithView:self.firstletterbutton duration:0.3 options:UIViewAnimationOptionTransitionFlipFromBottom 动画:^ [self.firstletterbutton setTitle:jobetu forState:UIControlStateNormal];完成:无;] 在我问之前,我想到了你的第一个解决方案,但它就是行不通。变化很快,没有任何闪烁/闪烁。 谢谢,我对这段代码做了一些研究,终于明白了。它现在效果很棒:)。这里我使用的代码:[UIView transitionWithView:self.agomb duration:0.3 options:UIViewAnimationOptionTransitionFlipFromRight animations:^ [self.agomb setTitle:@"B" forState:UIControlStateNormal]; 完成:无];

以上是关于动画 UIlabel 设置标题,即使我设置相同的字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局约束为移动 UILabel 设置动画?

在位置之前为 UILabel 尺寸设置动画

无法使用 Swift 为 UILabel 设置动画

如何为 UILabel 字体更改设置动画?

在 Swift 中使用 CoreAnimation 为 UILabel 元素设置动画

*只有一个*动画块(UILabel)使用自动布局的问题