在NSView边界更改托管CALayer

时间:2014-02-06 19:27:28

标签: macos cocoa core-animation calayer nsview

我有一个托管在NSView中的自定义CALayer,包含在NSScrollView中,在CALayer上设置属性将导致它的界限发生变化。

问题是NSView 真的希望拥有所包含的CALayer的边界,我可以通过在边界上添加KVO来使其工作,因此当图层边界发生更改时,它会更改NSView边界(它将图层边界更改为相同的值 - 幸运的是,如果值实际上没有改变,KVO不会递归)。

有更好的方法吗?看起来像浏览布局系统会更好但是我只能指定我喜欢的框架(通过我的转换我的边界) - 这会变成设置我的边界,但是有一些舍入误差。

CALayer如何请求更改边界?或者我目前的黑客攻击是首选机制......

1 个答案:

答案 0 :(得分:1)

我不完全确定你在做什么,但我让CALayer在其NSView上设置一个NSSize ivar,它改变了NSView的自动布局的内在大小,然后在视图上调用setNeedsRelayout:YES。如果您打算使用附加到视图的图层,请不要试图让尾巴摇尾巴。