IBDesignable视图无法渲染

时间:2016-08-11 21:55:44

标签: swift xcode macos interface-builder ibdesignable

我有一个简单的@IBDesignable视图,我已将其指定为macOS storyboard中场景的基类。例如,在Xcode 8中,Swift 3:

@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也是上述代码的再现。

1 个答案:

答案 0 :(得分:3)

问题是如果该视图是场景中的顶级视图,Interface Builder似乎无法在Interface Builder中正确呈现@IBDesignable macOS视图。它将在iOS中,但不是macOS。在macOS中,它只在Interface Builder中呈现可设计视图(如果它是子视图),而不是顶级视图。

我已提交错误报告。 #27817119