我正在使用NSTimer(5秒持续时间)和选择器从NSArray中随机选择名称。
这是一些代码
...
NSDate *endtime = [NSDate dateWithTimeIntervalSinceNow:5];
[NSTimer scheduledTimerWithTimeInterval:0.2
target:self
selector:@selector(selectPlayer:)
userInfo:endtime
repeats:YES ];
...
-(void)selectPlayer:(NSTimer *)timer
{
if ([timer.userInfo timeIntervalSinceNow] < 0)
{
[timer invalidate];
}
NSString *playerName = [[NSString alloc]initWithFormat:@"%@",
[self.playersNames objectAtIndex:random() & [self.playersNames count]-1]];
self.playersLabel.text = playerName;
[playerName release];
}
该代码完美地运作。 self.playersLabel每0.2秒填充一次随机名称。
我想要的是在playerLabel中更改名称时添加一些fadein / fadeout动画效果。
如何实现?
答案 0 :(得分:8)
您可以使用它来设置文字:
[UIView animateWithDuration:0.4 animations:^{
self.playersLabel.alpha = 0;
} completion:^(BOOL finished) {
self.playersLabel.text = @"Other text";
[UIView animateWithDuration:0.4 animations:^{
self.playersLabel.alpha = 1;
}];
}];
答案 1 :(得分:1)
更改playersLabel
以下是如何实现这一目标:
[UIView animateWithDuration:0.1 delay:0.f options:UIViewAnimationOptionCurveEaseInOut
animations:^{
playersLabel.alpha = 0.f;
} completion:^(BOOL complete){
[UIView animateWithDuration:0.1 delay:0.f options:UIViewAnimationOptionCurveEaseInOut
animations:^{
playersLabel.text = playerName;
playersLabel.alpha = 1.f;
} completion:NULL];
}];
我使用第一个动画的完成块来重置标签的alpha值。每个动画持续0.1,因为你的playerName
每0.2秒(0.1 * 2)被选中。你可以使用UIViewAnimationOptionAutoreverse
,但如果我记得它没有重置标签的alpha属性。