即使主线程被阻塞, AVCaptureVideoPreviewLayer的实例也会继续从视频捕获流中更新其内容。是否可以使用自定义子类来复制这种行为CALayer
?换句话说,给定原始图像数据,我们可以在主线程被阻塞时更新屏幕上显示的内容吗?
问问题
866 次
2 回答
3
当主线程被阻塞时,您无法更新视图中的任何内容。整个 UIKit 是单线程的,运行在主事件循环上。视频捕获是一种特殊情况,因为它直接绘制到屏幕缓冲区,但您无法自己复制它。
此外,如果您在主线程上执行长时间运行的任务,iOS 将假定您的应用程序已崩溃并在几秒钟后将其终止。
为什么不在后台线程上执行您的其他任务呢?这是标准做法。
于 2012-02-03T20:37:54.910 回答
0
我找到了一种在非 UI 线程上更新 UI 的方法。我们可以在任何线程中执行代码,它实际上改变了图层的变换,即使在主线程处于休眠状态时也是如此。
self.labelLayer.transform = CATransform3DMakeScale(1.2, 1.2, 1.0);
因此,如果有人可以解释这一点,请随时与我联系!
于 2017-11-22T07:25:24.733 回答