欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决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

上一篇:

下一篇: