我UILabel
的不是每次都刷新,而是仅刷新最后一个值。我想打印UILabel
.
for (int i=0; i<4; i++) {
lblText.text=[NSString stringWithFormat:@"%i",i];
sleep(1.2);
}
您正在覆盖这些值。您需要创建一个新数组,每次迭代都附加新值。
而且,不要在主线程中使用睡眠。这就是 UI 阻塞
如果你想改变标签文本间隔一段时间,为什么不使用NSTimer
_timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(changeText) userInfo:nil repeats:YES];
_loopTime = 0;
- (void)changeText
{
lblText.text=[NSString stringWithFormat:@"%i",_loopTime++];
if(_loopTime >= 3)
{
[_timer invalidate];
}
}
不要sleep()
在主线程中使用。因为它会冻结 UI。使用performSelector: afterDelay:
which 将调用函数(您自己的)来更新标签中的文本
阿米特..我不确定,但据我所知,iOS 会在两种方法执行之间重绘屏幕。并且只重绘最新的值。实现计数器。您需要正确的方法并启动计时器,如下所示。
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.2
target:self
selector:@selector(counter:)
userInfo:[NSNumber numberWithInt:i]
repeats:YES];
这是一种反方法。
-(void) counter:(NSNumber)count
{
if(count == 4)
{
[timer invalidate]; timer = nil;
}
lblText.text=[NSString stringWithFormat:@"%i",count];
//increment the counter
i++;
}
希望这可以帮助。