我正在尝试从后台操作向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()
}
在文本字段分配之后,也是徒劳无功的。
if mainView.lockFocusIfCanDraw() { ... }
内部了? - l'L'l-drawRect:
来支持并发绘制。它与 AppKit 对视图的处理方式无关。除非你真的需要在此处进行锁定,请不要设置此选项。 - CodaFi_initWithWindowNumber: error creating graphics ctxt object for ctxt
。顺便提一下,这个问题与flushGraphics
有关,但即使禁用了它,仍然没有改变。 - qwerty_soself.performSelector(onMainThread: Selector, with: Any?, waitUntilDone: Bool)
方法在主线程上设置文本字段的文本。 - Rohit Parsana