swift – 从后台 *** 作中绘制NSView无效

swift – 从后台 *** 作中绘制NSView无效,第1张

概述我正在尝试从后台 *** 作绘制到NSView,但看不到任何效果. let queue = OperationQueue()queue.addOperation() { doTheBackgroundStuff()} 启动后台 *** 作,进行大量计算.在AppDelegate我有 @IBOutlet weak var image: NSImageView! // some image to show 我正在尝试从后台 *** 作绘制到NSVIEw,但看不到任何效果.

let queue = OperationQueue()queue.addOperation() {  doTheBackgroundStuff()}

启动后台 *** 作,进行大量计算.在AppDelegate我有

@IBOutlet weak var image: NSImageVIEw!  // some image to show@IBOutlet weak var number: NSTextFIEld! // a corresponding number@IBOutlet weak var mainVIEw: NSVIEw!    // the main vIEw holding the above

分配

number.intValue = Int32(someNumber)

是经常(经常)从后台运作发出的.但文本永远不会改变.我在IB中为视图和TextFIEld设置了“可以同时绘制”.我也试过了

if mainVIEw.lockFocusIfCanDraw() {  mainVIEw.setNeedsdisplay(mainVIEw.rectPreservedDuringliveResize)  mainVIEw.unlockFocus()}

在文本字段分配之后.也无济于事.

解决方法 通常,如果您将视图更新代码从后台任务中发送回主队列,这些问题就会消失:

dispatchQueue.main.async {    // your vIEw update code}

如果你的doTheBackgroundStuff中没有太多的地方,你可以把它们放在视图更新中,即每当你访问你的mainVIEw时.

否则,有助于将事物重新分组为非UI繁重的部分,然后在最后将视图更新推送到dispatch.main.async.

总结

以上是内存溢出为你收集整理的swift – 从后台 *** 作中绘制NSView无效全部内容,希望文章能够帮你解决swift – 从后台 *** 作中绘制NSView无效所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1005650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存