解决UI控件更新不及时问题
程序员文章站
2024-01-02 21:17:34
...
有时候我们会在开发过程中发现某个控件出现更新不及时问题,如:某个Button明明设置了frame但是其位置和尺寸并没有改变需要点击一下的时候才会更新,又或者一个Label已经设置了一个新的text,但是内容还是旧的等等这类的现象。起初以为是因为自己没有调用setNeedDisplay或者setNeedLayout方法导致更新不及时。后来才发现是因为UI的操作没有在主线程调用所导致的问题。
因此,如果在某个方法中存在UI操作,如果没有把握认定这个操作是在主线程中执行的话,那么可以通过GCD在方法中指定UI操作分发到主线程中执行。如:
- (void)setText:(NSString *)text forTextField:(UITextField *)textField
{
//其它操作
textField.text = text;
//其它操作
}
改为下面的形式
- (void)setText:(NSString *)text forTextField:(UITextField *)textField
{
//其它操作
dispatch_async(dispatch_get_main_queue(), ^{
textField.text = text;
});
//其它操作
}
转载于:https://my.oschina.net/vimfung/blog/379400
推荐阅读
-
解决UI控件更新不及时问题
-
解决PySide+Python子线程更新UI线程的问题
-
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
-
解决element-ui中下拉菜单子选项click事件不触发的问题
-
解决PySide+Python子线程更新UI线程的问题
-
vue数据更新UI不刷新显示的解决办法
-
解决HTTP数据不更新问题——no-cache在HTTP通信协议中的应用
-
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
-
解决element-ui中下拉菜单子选项click事件不触发的问题
-
2个小时解决百度快照不更新的问题,百度快照不更新怎么办!