有一个标签在10秒内显示分数从10,000到0(lblPoints)
NSTimer pointstimer=[[NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(pointstimermethod) userInfo:nil repeats:YES]retain];
-(void)pointstimermethod
{
points=points-1;
lblPoints.text=[NSString stringWithFormat:@"%d",points];
}
任何人都可以告诉我如何在10秒内准确地显示10,000到0吗?
答案 0 :(得分:3)
显示屏仅以60 Hz最大值更新,NSTimer触发精度取决于UI运行循环中发生的情况,因此可能会出现一到几个显示帧时间(超过10 mS)的误差,当然不是1 mS分辨率。将跳过10000和0之间的大量数字,因为设备最多只能在10秒内显示600个唯一帧。
我会尝试使用CADisplayLink设置进行60 Hz显示更新(这是最大值),使用mach_time检查当前时间,从某个开始时间减去该值,从10.0中减去该值以获得倒计时,并显示1000倍差值以秒为单位,直到达到0.0秒。
答案 1 :(得分:1)
在viewDidLoad方法中粘贴以下代码
NSTimer pointstimer=[[NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(pointstimermethod) userInfo:nil repeats:YES]retain];
-(void)pointstimermethod
{
points=points-1;
if(points >= 0 && points <= 10000){
lblPoints.text=[NSString stringWithFormat:@"%d",points];
}
}
我希望这可以帮助你交配..
:)
答案 2 :(得分:1)
声明以下.h文件。
int points;
在实施文件中,请输入以下代码。
-(void)showScore:(id)sender {
points = 10000;
[NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(pointsTimerMethod:) userInfo:nil repeats:YES];
}
-(void)pointsTimerMethod:(NSTimer*)timer
{
points=points-1;
lblPoints.text=[NSString stringWithFormat:@"%d",points];
if(points == 0) {
[timer invalidate];
timer = nil;
}
}
如果要将其显示在10000到0之间,请调用showScore:
方法。
答案 3 :(得分:1)
NSTimer pointstimer=[[NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(pointstimermethod) userInfo:nil repeats:YES]retain];
-(void)pointstimermethod
{
if(pointstimer==0)
{
[pointstimer invalidate];
}
else
{
points=points-1;
lblPoints.text=[NSString stringWithFormat:@"%d",points];
}
}