我的工作片段如下:
for (UIButton *b in buttonMapping) {
[b setTitle:@"yo!" forState:UIControlStateNormal];
[NSThread sleepForTimeInterval:1.0];
}
有四个按钮,所有四个按钮都会更新。然而,不是每秒更新一个,而是四秒过去并且它们全部更新。
如何强制 UIButton 更新?或者这不是推荐的 sleep 方法?
最佳答案
[b setNeedsDisplay];
我也不建议休眠主线程(就像您在这里所做的那样),因为这会禁用所有用户交互。
有几种选择。一种可能是使用 NSTimer 每秒执行一次特定方法。但是,更简单的方法是执行以下操作:
for (NSUInteger idx = 0; idx < [buttonMapping count]; idx++) {
UIButton * b = [buttonMapping objectAtIndex:idx];
[b performSelector:@selector(setNormalStateTitle:) withObject:@"yo!" afterDelay:(idx*60)];
}
然后向 UIButton(即类别)添加一个名为 setNormalStateTitle:
的方法,该方法仅执行 setTitle:forControlState:
方法。通过这种方法,您根本不需要 setNeedsDisplay
方法。
关于iphone - 如何强制UIButton刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1622036/