1

即使主线程被阻塞, AVCaptureVideoPreviewLayer的实例也会继续从视频捕获流中更新其内容。是否可以使用自定义子类来复制这种行为CALayer?换句话说,给定原始图像数据,我们可以在主线程被阻塞时更新屏幕上显示的内容吗?

4

2 回答 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 回答