updateLayer () context - PullRequest
       65

updateLayer () context

0 голосов
/ 23 октября 2018

В NSView я делаю это для macOS 10.14:

override var wantsUpdateLayer: Bool {
    return true
}

override func updateLayer() {
    if let context = NSGraphicsContext.current?.cgContext {
        // Never enters here
    }
    else {
        // Gives run-time error, invalid context
        let path = NSBezierPath()
        path.move(to: NSPoint(x: 0, y: 0))
        path.line(to: NSPoint(x: 10, y: 10))
        path.stroke()
    }
}

Итак, нет действительного графического контекста, как в переопределенном func draw (_ dirtyRect: NSRect), и я не могу получитьодин.Как я должен получить действительный графический контекст для рисования в updateLayer?

1 Ответ

0 голосов
/ 23 октября 2018

Вы не должны рисовать в updateLayer, поэтому вам не передается cgContext.Для этого используйте CALayerDelegate drawLayer:inContext:.updateLayer - это альтернативный метод назначения растрового изображения непосредственно слою, который ограничивается этим.

См .: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/SettingUpLayerObjects/SettingUpLayerObjects.html

...