Ios 为什么UIButton从不隐藏,然后又偷偷回来?
因此,Ios 为什么UIButton从不隐藏,然后又偷偷回来?,ios,objective-c,uibutton,Ios,Objective C,Uibutton,因此,self.pic是我想要隐藏的ui按钮。但出于某种原因,它从未真正隐藏它 请帮忙 - (void)tick:(NSTimer*)time { self.pic.hidden = YES; [NSThread sleepForTimeInterval:1]; self.pic.hidden = NO; [self.pic setEnabled:NO]; if (self.checkPic == YES) { self.live
self.pic
是我想要隐藏的ui按钮。但出于某种原因,它从未真正隐藏它
请帮忙
- (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;
}
为了详细说明@rmaddy在他的评论中所说的话,你不应该在主线程(或UI)上睡觉。当您这样做时,您将阻塞负责对按钮进行可视更改的线程,例如按钮是否隐藏。解决方案是异步进行等待,而GCD有一个内置的函数,可以轻松地进行等待
dispatch\u 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;
});
不要在主线上睡觉。