我正在尝试创建一种在我的应用中闪烁某个图标的方法。 但是当我使用这段代码时:
-(void)blinkIcon : (UIButton *)theIcon
{
for (int i = 0; i < 6 ; i++)
{
if (theIcon.hidden)
{
theIcon.hidden = NO;
}
else
{
theIcon.hidden = YES;
}
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.3]];
}
theIcon.hidden = NO;
}
它的效果不是很好,因为图标会“卡住”几秒钟而且就是这样。 这个过程必须以:
结束theIcon.hidden = NO;
答案 0 :(得分:1)
我刚刚编写了这个方法,通过 blink 按钮获取我认为的意思。
- (void)blinkButton:(UIButton *)button {
CGFloat newAlpha = button.alpha == 1.0 ? 0.1 : 1.0;
[UIView animateWithDuration:0.5 animations:^{
button.alpha = newAlpha;
} completion:^(BOOL finished) {
[self blinkButton:button];
}];
}
它产生以下结果:
https://www.dropbox.com/s/48vfpgn1cw6mj17/blink2.mov?dl=0
如果你不能在将来停止它,你可以做这样的事情 - 我设置了一个用于测试的条形按钮项,调用stopBlinking方法:
- (void)blinkButton:(UIButton *)button {
// if we shouldn't be blinking and the button is currently not
// totally faded in, fade it all the way in
if (!_shouldBlink && button.alpha != 1.0) {
[UIView animateWithDuration:0.5 animations:^{
button.alpha = 1.0;
}];
}
// otherwise we should continue blinking
else {
CGFloat newAlpha = button.alpha == 1.0 ? 0.1 : 1.0;
[UIView animateWithDuration:0.5 animations:^{
button.alpha = newAlpha;
} completion:^(BOOL finished) {
[self blinkButton:button];
}];
}
}
- (void)stopBlinking {
_shouldBlink = NO;
}
这产生了这个: