已应用转换的NSView子层的控制布局

问题描述 投票:0回答:1

[我正在尝试创建一个NSView子类,该子类可以使我访问一个层,我可以控制该层来控制通常超出限制的参数,例如anchorPoint和transform,以及应用动画。

我的计划是创建一个图层托管视图,然后在其根图层中添加一个子图层。除了我在定位和调整该子层的大小方面非常困难之外,这非常完美。我觉得我缺少明显的东西,但我无法弄清楚。

我的第一次尝试是将根层的layoutManager设置为CAConstraintLayoutManager除非效果很好。我设置了子图层的transform属性。 CAConstraintLayoutManager直接更新图层的框架,这会导致旋转转换出现问题。我花了很长时间才弄清楚这一点,但最终我确实找到了解释这一点的documentation

[好,接下来,我做了一个自定义的CALayoutManager,它仅调整子图层的boundsposition,而不更改帧)。这似乎可行,但是如果我的视图有子视图,则会破坏布局。这让我感到惊讶。我猜想当涉及其他层时,它会干扰NSView的内部布局系统?

所以,我继续使用根层委托方法func layoutSublayers(of layer: CALayer)。这也破坏了布局,因为我没有意识到NSView本身希望成为根层的委托,并专门使用该方法。

所以,在这一点上,我很茫然。我无法弄清楚如何控制布局以及如何将转换应用于子层。有人有什么建议吗?

我正在尝试创建一个NSView子类,该子类可以使我访问一个层,对于该层,我可以控制通常超出限制的参数,如anchorPoint和transform,以及应用动画。 ...
core-animation nsview appkit
1个回答
0
投票
事实证明,这个问题有一个明显的答案。 NSView有一个完美的layout方法。我很早就对此进行了试验,但是我的代码处于错误状态,并且由于其他原因,事情无法正常进行。一旦删除所有实验/半注释代码,一切就变好了!
© www.soinside.com 2019 - 2024. All rights reserved.