码迷,mamicode.com
首页 > 其他好文 > 详细

解决UI控件更新不及时问题

时间:2015-02-20 12:00:53      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

有时候我们会在开发过程中发现某个控件出现更新不及时问题,如:某个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;
    });
    //其它操作
}


解决UI控件更新不及时问题

标签:

原文地址:http://my.oschina.net/vimfung/blog/379400

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!