如何在NSScrollView上使用圆角以使用NSRulerView

时间:2012-03-30 13:38:45

标签: cocoa calayer rounded-corners nsscrollview rulers

我在使用水平NSTextView的{​​{1}}中嵌入NSScrollView时遇到一些困难,以便使用圆角掩码。我已经创建了一个简单的测试应用程序来本地化问题。

首先,基本上有两种方法可以在NSRulerView上获得圆角。第一种是使用NSScrollView并将其路径属性设置为所需的圆角矩形贝塞尔曲线路径。第二种方法是将CAShapeLayer的{​​{1}}属性设置为所需的值,然后将其CALayer属性设置为1.0 alpha的任何颜色(例如纯黑色)。在通过cornerRadius对其进行图层备份后,可以使用这些图层中的任何一个来设置backgroundColor的支持图层的NSScrollView属性。虽然当我将它直接应用到mask的背衬层时,我会得到一些绘图工件。因此,我将掩码应用于setWantsLayer:的superview的支持层。 superview本身只是一个简单的容器视图。

现在,当我们显示标尺视图并开始与它进行交互时,问题就出现了。标尺视图本身看起来很棒,由于上面应用了蒙版,因此它具有圆角。但是,当我开始添加和拖动标记时,它们是不可见的,直到我释放鼠标,这使得定位标记变得非常困难。此外,拖动时不会显示标准垂直标记线。

我已经确认这是由于面罩的存在而发生的。当我禁用掩码时,NSScrollView表现正常。

所以问题是,我怎样才能让NSScrollViewNSRulerView的圆角齐聚一堂?

在鼠标拖动跟踪过程中,看起来好像遮罩层以某种方式遮挡了NSRulerView中出现的临时图形。如果是这种情况,我如何让NSScrollView执行它的绘图高于其他一切?使它和所有其他视图支持层,以及将NSRulerView定位在所有兄弟视图之上(为了好的衡量标准)似乎没有任何效果。

我还尝试将NSRulerView子类化为覆盖委托方法NSRulerView(和其他人)以强制绘制,但它似乎在一个奇怪的位置绘制标记,靠近左下角窗口,在NSTextView附近,即使确保我在正确的坐标系中。我怀疑这是一个绘图工件,因为强制它在其他地方绘制没有效果。

0 个答案:

没有答案