现在我有一个按钮的IBAction,它生成一个随机数,每个数字分配给UILabel中的显示文本。而不是只是出现,我希望文本淡入或任何其他有趣的动画也会很酷。有谁知道一个简单的方法来实现这一目标?
现在我只使用
labelMain.text = @"my text";
答案 0 :(得分:31)
我知道这有点陈旧(11个月),但我认为值得一提的是其他方法的替代方案,我觉得这是一个更好的解决方案。
使用UIView transitionWithView:duration:options:animations:completion
类级方法,如下所示:
NSTimeInterval duration = 0.5f;
[UIView transitionWithView:labelMain
duration:duration
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
labelMain.text = @"new value";
} completion:nil];
这将从先前的labelMain.text
值到#34;新值"交叉渐变。
此方法也适用于其他视图值,例如更改UIImageView的图像。
有关该主题的信息,请参阅Apple's docs。
答案 1 :(得分:28)
以下代码会对您的标签产生淡入效果。
- (IBAction)buttonClicked:(UIButton *)sender
{
labelMain.alpha = 0;
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
animations:^{ labelMain.alpha = 1;}
completion:nil];
}
答案 2 :(得分:6)
label.text = @"old text";
[UIView animateWithDuration:0.4 animations:^{
label.alpha = 0.0f;
} completion:^(BOOL finished) {
label.text = @"next text";
[UIView animateWithDuration:0.4 animations:^{
label.alpha = 1.0f;
} completion:^(BOOL finished) {
NSLog(@"finished transition");
}];
}];
答案 3 :(得分:1)
试试这个:
[labelMain setAlpha:0];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[labelMain setAlpha:1];
[UIView commitAnimations];
更改持续时间非常简单 - 只需调整代码中的值0.8
即可。
答案 4 :(得分:0)
// fade out the current value
[UIView animateWithDuration:0.2
delay:0
options:0
animations:^{
labelMain.alpha = 0.0f;
}
completion:^(BOOL finished) {
// set the new value and fade in
labelMain.text = newValue;
[UIView animateWithDuration:0.2
delay:0
options:0
animations:^{
labelMain.alpha = 1.0f;
}
completion:nil];
}];
答案 5 :(得分:0)
这看起来像交叉渐变动画
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut
animations:^{
labelMain.alpha = 0;
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
animations:^{ labelMain.alpha = 1;}
completion:nil];
} completion:nil];