[英]How can I update the contents of a CALayer while the main thread is blocked?
即使主线程被阻止, AVCaptureVideoPreviewLayer实例仍继续从视频捕获流中更新其内容。 通常可以使用CALayer
的自定义子类复制此行为吗? 换句话说,给定原始图像数据,我们可以在主线程被阻塞时更新屏幕上显示的内容吗?
当主线程被阻止时,您无法更新视图中的任何内容。 整个UIKit是单线程的,并在主事件循环上运行。 视频捕获是一种特殊情况,因为它会直接吸引到屏幕缓冲区,但是您将无法自己复制它。
此外,如果您在主线程上执行了长时间运行的任务,iOS会假定您的应用程序已崩溃并在几秒钟后将其杀死。
为什么不在后台线程上执行其他任务呢? 这是标准做法。
我找到了一种在非UI线程上更新UI的方法。 我们可以在任何线程中执行代码,并且即使主线程处于休眠状态,它实际上也会更改图层的转换。
self.labelLayer.transform = CATransform3DMakeScale(1.2, 1.2, 1.0);
因此,如果有人可以解释这一点,请随时与我联系!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.