2016-08-11 8 views
1

У меня есть простой вид @IBDesignable, который я определил как базовый класс для сцены в моей раскадровке macOS. Например, в Xcode 8 Swift 3:IBDesignable view not rendering

@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() 
    } 

} 

Когда я запустить приложение, эта точка зрения кажется хорошо. Но это условное представление не отображается в моей сцене в Interface Builder. Зачем?

Проблема проявляется в Xcode 7.3.1 с использованием Swift 2 вышеприведенного кода.

ответ

2

Проблема заключается в том, что интерфейс Builder не выглядит должным образом отображать вид macOS @IBDesignable в Interface Builder, если это представление является видом верхнего уровня в сцене. Это будет в iOS, но не в macOS. В macOS он только отображает разрешаемое представление в Interface Builder, если он является подвью, но не видом верхнего уровня.

Я подал отчет об ошибке. # 27817119

+0

Я получил обновление, что этот отчет об ошибке был дубликатом предыдущего. Итак, Apple, по крайней мере, знает об этой проблеме. – Rob

+1

Эта ошибка все еще существует в XCode 8.3 :( – Alnitak