我想用Blink动画更改我的UILabel的文本。文本应为“text1”,黑色,消失,然后更改为“text2”和红色,反之亦然。 这是我的代码
#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *image;
@property (weak, nonatomic) IBOutlet UILabel *label;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self performSelector:@selector(combineAnimations) withObject:self afterDelay:0.0];
self.label.textColor = [UIColor blackColor];
self.label.text = @"text1";
[self animateView];
}
- (void) animateView {
[UIView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat |UIViewAnimationOptionCurveEaseInOut
animations:^{
self.label.text = @"text2";
self.label.textColor = [UIColor redColor];
}
completion:nil];
}
我错过了什么?
答案 0 :(得分:-1)
在完成块中使用两个相互调用的方法。您还可以调整快速淡入或淡出...这比简单的“眨眼”更不易震动。如果你想要闪烁,没有时间,只需将延迟设置为0.0。同样,您可以调整其中的alpha以获得淡入淡出效果。
- (void) animateView {
self.label.text = @"text2";
self.label.textColor = [UIColor redColor];
[UIView animateWithDuration:.5
delay:1.0
option:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.label.alpha = 1;
}
completion:{
[self animateViewReverse];
}];
}
- (void) animateViewReverse {
self.label.text = @"text1";
self.label.textColor = [UIColor blackColor];
[UIView animateWithDuration:1.0
delay:1.0
option:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.label.alpha = 1;
}
completion:{
[self animateView];
}];
}
您似乎有点困惑的一件事是动画标签的文字。你实际上并没有为文本字符串设置动画,只是像alpha,size,position这样的东西。因此,在您的情况下,您可以在动画之前更改颜色和文本字符串,只需使用动画作为触发下一个动画/反向的方式 - 它还可以构建更多细微动画的功能(除了简单的闪烁之后)。
如果你想在没有动画的情况下这样做,你可以简单地创建两个方法,每个方法设置文本一个方式,然后调用另一个延迟,如:
[self performSelector:@selector(animationReverse) withObject:nil afterDelay:2];