所以self.pic
是我要隐藏的UIButton。但它出于某种原因从未实际隐藏过它。
请帮助
- (void)tick:(NSTimer*)time
{
self.pic.hidden = YES;
[NSThread sleepForTimeInterval:1];
self.pic.hidden = NO;
[self.pic setEnabled:NO];
if (self.checkPic == YES)
{
self.lives--;
self.livesLabel.text = [NSString stringWithFormat:@"Lives : %d", self.lives];
}
[self.pic setImage:[self backgroundImageForGame] forState:UIControlStateNormal];
[self check];
self.pic.enabled = YES;
}
答案 0 :(得分:0)
为了详细说明@rmaddy在评论中所说的内容,你不应该睡觉主要(或UI)线程。执行此操作时,您将阻止负责对按钮进行可视更改的线程,例如是否隐藏该按钮。解决方案是异步进行等待,GCD具有内置函数,使其无痛。
dispatch_after()
允许您在选定的队列上创建将在指定延迟后执行的块。由于您要更新UI,因此您需要返回主队列以对屏幕上的按钮进行更改。这是一个例子:
self.pic.hidden = YES;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.pic.hidden = NO;
});