gpt4 book ai didi

ios - 如何从后台任务添加和重绘 CALayer?

转载 作者:行者123 更新时间:2023-11-28 08:53:42 26 4
gpt4 key购买 nike

  • 我有一个 UIView“myuiview”。
  • 我在该 View 中添加了一些 CALayer。在我的示例中,它只有一个“calayer”
  • 在后台任务中,我正在创建一个复杂的形状并将其添加到 calayer。
  • 在主线程中,我刷新了 calayer 并希望在屏幕上看到新的形状。

新形状只有在移动屏幕并调用 CGAffineTransformTranslate(myuiview,x,y) 后才会出现;

我做错了什么?

dispatch_async(backgroundQueue, {

var calayer:CALayer=CALayer();
myuiview.layer.addSublayer(calayer);
myshape=createShape(); // takes long, thats why in the background.

dispatch_async(dispatch_get_main_queue()) {
calayer.addSublayer(myshape)
calayer.setNeedsDisplay(); // No update on the screen !!!!
}
})

最佳答案

这似乎是个问题,因为您从非主线程管理层层次结构。将相关代码移到 dispatch main queue block 中,它应该可以工作。为了处理性能,您可以在离线位图上下文中的非主线程中执行渲染,生成 CGImage 并将其作为内容提供给主线程中的图层

关于ios - 如何从后台任务添加和重绘 CALayer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33624528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com