2017-02-26 96 views
-1

NSView class documentation中,有一个符号canDraw,指示绘图命令是否会产生任何结果。如何设置NSView实例属性

的声明是var canDraw: Bool { get } - 所以,任何时候你尝试一些诸如

@IBOutlet weak var myView: NSView! 

然后myView.canDraw = true,你会得到一个编译时错误消息:“Cannot assign to property: 'canDraw' is a get-only property”。但是,如果我想将NSRect绘制到我的视图上,我该如何更改此属性?

+0

你不会改变它。阅读文档!它正在向您报告您目前是否有上下文。如果你想负责绘图,你只需要执行'draw'方法。 https://developer.apple.com/reference/appkit/nsview/1483686-draw – matt

+0

@matt我试着实现'draw'方法,并且没有发现任何变化,所以我认为它被忽略了,因为' canDraw'是错误的。我的错。我会继续修改'draw'。 –

+0

好的,所以你需要问自己_why_' canDraw'是否是假的。该文档说:“如果视图对象没有隐藏,它可以在屏幕上绘制,它被附加到窗口中的视图层次结构(NSWindow),并且该窗口具有相应的窗口设备。”我的猜测是你的视图对象不符合这些标准。 – matt

回答

2

您不能更改canDraw,因为它是只读的。它是只读的,因为它报告的事实是你无法控制的事实,也就是说,这是否是你现在可以借鉴的观点。

要绘制一个视图 - 即实现一个负责绘制自己的NSView - 子类NSView并实现draw。例如:

enter image description here

在屏幕截图所示的代码基本上是在应用程序的唯一代码。窗口中的视图是MyView,MyView实现draw