如何绘制NSView CALayer子视图?

时间:2018-08-23 01:54:58

标签: calayer nsview

就在我以为我开始了解CALayer和NSView和绘图时,我发现我不了解!

我有一个支持NSView的现有图层,该图层绘制可以使用鼠标拖动的形状。在此NSView下是另一个带有背景图像的视图,用于帮助定位形状。 我想在它们之间设置一层,可以切换各种级别的透明白色以遮盖背景图像。 我认为,只需在具有形状的NSView中添加另一个CALayer并在该图层上绘制并将白色背景的NSView图层使用即可。

很简单,直到我意识到我不知道如何在这个新图层上绘制。

目前,NSView.draw(dirtyRect)方法在默认的图层上进行绘制,但是在新的子视图图层上进行绘制并不明显。

似乎有两个选择: 1.子类化CALayer并实现draw()方法-但这似乎没有draw(dirtyRect)方法!是什么让我每次都要重新绘制整个图层? 2.使用委托进行绘制,但是似乎委托函数没有draw(dirtyRect)选项。

为什么图层委托方法不提供dirtyRect参数?这是否意味着我必须重绘整个图层?

也许我的方法在这里是错误的,在视图层次结构中添加另一个NSView似乎要简单得多。

关于如何使用图层以及是否可以重新绘制dirtyRect区域的任何指针?

0 个答案:

没有答案