2016-08-11 6 views
1

Ich habe eine einfache @IBDesignable Ansicht, die ich als Basisklasse für eine Szene in meinem MacOS-Storyboard angegeben habe. Z. B. in Xcode 8, Swift 3:IBDesignbare Ansicht nicht rendern

@IBDesignable class OvalView: NSView { 

    @IBInspectable var strokeColor: NSColor = .black { didSet { needsDisplay = true } } 

    @IBInspectable var brushSize: CGFloat = 5.0 { didSet { needsDisplay = true } } 

    override func draw(_ dirtyRect: NSRect) { 
     super.draw(dirtyRect) 

     strokeColor.setStroke() 

     let path = NSBezierPath(ovalIn: NSInsetRect(bounds, brushSize/2, brushSize/2)) 
     path.lineWidth = brushSize 
     path.stroke() 
    } 

} 

Wenn ich die App starte, erscheint diese Ansicht in Ordnung. Diese Darstellungsansicht wird jedoch in meiner Szene im Interface Builder nicht gerendert. Warum?

Das Problem manifestiert sich in Xcode 7.3.1 mit Swift 2 Wiedergabe des obigen Codes auch.

Antwort

2

Das Problem besteht darin, dass Interface Builder eine @IBDesignable macOS-Ansicht im Interface Builder nicht korrekt darstellt, wenn diese Ansicht die oberste Ebene in einer Szene ist. Es wird in iOS, aber nicht macOS. In Mac OS rendert es nur die Entwurfsansicht in Interface Builder, wenn es sich um eine Unteransicht, aber nicht um die Ansicht auf oberster Ebene handelt.

Ich habe einen Fehlerbericht eingereicht. # 27817119

+0

Ich habe ein Update erhalten, dass dieser Fehlerbericht ein Duplikat des vorherigen war. Also, Apple ist sich zumindest des Problems bewusst. – Rob

+1

Dieser Fehler scheint immer noch in XCode 8.3 zu existieren :( – Alnitak

Verwandte Themen