在iPhone OS中获取文本的最佳方法是什么?

我想让我的文本框闪烁(就像旧的LCD时钟一样)。

现在,我打电话给无数的NSTimers和select器,等待,改变alpha,等等,然后再改回来。 即使这样,它看起来真的很糟糕,我想我必须把一个NSTimer逐渐改变阿尔法,但从我听到他们不是为了精确的事情。

我的想法是,必须有一种方法来做到这一点,比我目前正在实施更好。 这感觉像黑客。

使用animation委托可能会使它更less“哈克”:

[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; [myLabel setAlpha:0.0]; [UIView commitAnimations]; 

然后你可以让你的didStopSelector重新开始animation:

 - (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { [self displayLabel]; } 

根据animationID,你可以采取不同的行动等。使用UIView的setAnimationDelay也可以派上用场。

UIView还有一个animationsetDuration调用:

 [UIView setAnimationDuration:0.1]; 

如果您正在构buildiOS4,请检查文档,因为您应该使用基于块的animation调用,而不是这些基于委托的调用。

你可以像使用annimation一样设置标签的alpha

用animation来隐藏标签

 [UIView animateWithDuration:0.2 delay:0.1 options:UIViewAnimationOptionCurveEaseOut animations:^{ lblDistance.alpha=0; } completion:^(BOOL finished) { if (finished) { } }]; 

用animation显示标签

 [UIView animateWithDuration:0.2 delay:0.1 options:UIViewAnimationOptionCurveEaseOut animations:^{ lblDistance.alpha=1; } completion:^(BOOL finished) { if (finished) { } }]; 

这是任何人都可以制作闪烁标签的最佳方式……..

我会使用一个NSTimer,而不是用alpha通道搞乱我要么不绘制文本(如果这甚至可能与苹果公司的非常属性限制的SDK),或者如果这是不可能的,你总是可以绘制的东西(如一个矩形)。

使用这种在文本上绘制东西的方法会产生更好的性能。 虽然有些(最好的)会认为这是一个丑陋的黑客,让我只是说:“如果它看起来是正确的,这是正确的。

NSTimers和改变alpha是一个完全可以接受的方式 – 这当然是我做的。 如果您遇到问题,也许代码示例可能帮助我们看到问题在哪里?