IBDesignable视图无法呈现

3

我有一个简单的@IBDesignable视图,我已经指定它为macOS storyboard中场景顶层视图的基类。例如:

@IBDesignable
class OvalView: NSView {
    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        NSColor.red.setFill()
        NSBezierPath(ovalIn: bounds).fill()
    }
}

当我运行应用程序时,此视图显示得很好。但是,在我的场景中,此可设计视图未呈现:

enter image description here

请注意,仅当所涉及的视图是场景的顶级视图时,才会出现此问题。如果我为子视图执行此操作,它可以正常工作:

enter image description here


这是一篇比较旧的帖子,但是在XCode 10.2.1中已经可以正常工作了。 - Jay
奇怪。对我来说它肯定是有效的。当我在IB的检查器中更改这些属性时,颜色和画笔大小都会改变。 - Jay
很遗憾,你在这种情况下误解了问题,即问题只在处理顶层视图时表现出来。实际上,这个问题仍然存在于Xcode 10.2.1和Xcode 11中。 - Rob
如果我误解了“顶层视图”,那可能有几种不同的情况。‘顶层视图’是指NSViewControllers内容视图吗?例如,在Storyboard上,窗口的viewControllers视图?我遇到了类似的问题-只想澄清一下。 - Jay
请查看已修订问题中的快照。 - Rob
1个回答

6
问题在于Interface Builder似乎无法正确地在macOS场景中呈现使用@IBDesignable的视图。它可以在iOS中实现,但在macOS中仅在作为子视图时才会在Interface Builder中呈现可设计视图,而不是顶级视图。
我已经提交了一个错误报告。#27817119

我收到了更新,说这个错误报告是之前的一个重复。因此,苹果公司至少意识到了这个问题。 - Rob
1
这个 bug 似乎在 XCode 8.3 中仍然存在 :( - Alnitak
2020年6月,仍在使用Xcode 11.5,有点让人恼火。 - jeff-h

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接