2016-08-11 88 views
1

我有一个简单的@IBDesignable视图,我已经指定为我的macOS故事板中的场景的基类。例如,在Xcode 8中,Swift 3:IBDesignable视图不渲染

@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

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

我提交了一个错误报告。 #27817119

+0

我收到了此错误报告与上一个错误报告重复的更新。所以,苹果至少知道这个问题。 – Rob

+1

这个错误似乎仍然存在于XCode 8.3 :( – Alnitak