CGGradient不立即绘制

时间:2016-05-14 19:05:48

标签: ios objective-c

我真的无法理解发生了什么。我的图像视图上有渐变,我想在没有互联网时将其删除。当互联网回来时,我想再次绘制它。这可能听起来很奇怪,但是当互联网在线和我的块调用时,它(渐变)仅在10-15秒后绘制。它是什么样的黑魔法?这是代码:

[[Reachability rac_reachabilitySignal] subscribeNext:^(Reachability *reach) {
        NSLog(@"%hhd reachable internet", reach.isReachable);
        NSLog(@"%hhd reachable waflya", reach.isReachableViaWiFi);

        if (reach.isReachable && reach.isReachableViaWiFi){
            NSLog(@"prepare to insert gradient");
            [_vFooter.layer insertSublayer:self.gradient atIndex:0];
            [self.view setNeedsDisplay];
            [self.newsImage setNeedsDisplay];
        }

    }];

详细信息并不重要,请确保在连接出现后立即执行阻止。

这是我做断点时的屏幕:

enter image description here

1 个答案:

答案 0 :(得分:1)

必须在主线程上对任何UI(包括视图/图层)进行更新!

dispatch_async(dispatch_get_main_queue(), ^{
    [_vFooter.layer insertSublayer:self.gradient atIndex:0];
    // ...
});