我有一个简单的@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也是上述代码的再现。
答案 0 :(得分:3)
问题是如果该视图是场景中的顶级视图,Interface Builder似乎无法在Interface Builder中正确呈现@IBDesignable
macOS视图。它将在iOS中,但不是macOS。在macOS中,它只在Interface Builder中呈现可设计视图(如果它是子视图),而不是顶级视图。
我已提交错误报告。 #27817119