现在我有一个按钮的 IBAction,它生成一个随机数,每个数字分配给在 UILabel 中显示文本。而不是仅仅出现,我希望文本淡入或任何其他有趣的动画也很酷。有谁知道实现这一点的简单方法?
现在我只是使用
labelMain.text = @"my text";
现在我有一个按钮的 IBAction,它生成一个随机数,每个数字分配给在 UILabel 中显示文本。而不是仅仅出现,我希望文本淡入或任何其他有趣的动画也很酷。有谁知道实现这一点的简单方法?
现在我只是使用
labelMain.text = @"my text";
我知道这有点陈旧(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
到“新值”。
这种方法也适用于其他视图值,例如更改 UIImageView 的图像。
请参阅Apple关于该主题的文档。
以下代码将为您的标签提供褪色效果。
- (IBAction)buttonClicked:(UIButton *)sender
{
labelMain.alpha = 0;
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
animations:^{ labelMain.alpha = 1;}
completion:nil];
}
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");
}];
}];
试试这个:
[labelMain setAlpha:0];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[labelMain setAlpha:1];
[UIView commitAnimations];
更改持续时间非常简单 - 只需调整0.8
代码中的值。
// 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];
}];
这看起来像交叉淡入淡出动画
[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];