[我正在尝试创建一个NSView子类,该子类可以使我访问一个层,我可以控制该层来控制通常超出限制的参数,例如anchorPoint和transform,以及应用动画。
我的计划是创建一个图层托管视图,然后在其根图层中添加一个子图层。除了我在定位和调整该子层的大小方面非常困难之外,这非常完美。我觉得我缺少明显的东西,但我无法弄清楚。
我的第一次尝试是将根层的layoutManager
设置为CAConstraintLayoutManager
。 除非效果很好。我设置了子图层的transform
属性。 CAConstraintLayoutManager
直接更新图层的框架,这会导致旋转转换出现问题。我花了很长时间才弄清楚这一点,但最终我确实找到了解释这一点的documentation。
[好,接下来,我做了一个自定义的CALayoutManager
,它仅调整子图层的bounds
和position
,而不更改帧)。这似乎可行,但是如果我的视图有子视图,则会破坏布局。这让我感到惊讶。我猜想当涉及其他层时,它会干扰NSView的内部布局系统?
所以,我继续使用根层委托方法func layoutSublayers(of layer: CALayer)
。这也破坏了布局,因为我没有意识到NSView本身希望成为根层的委托,并专门使用该方法。
所以,在这一点上,我很茫然。我无法弄清楚如何控制布局以及如何将转换应用于子层。有人有什么建议吗?
我正在尝试创建一个NSView子类,该子类可以使我访问一个层,对于该层,我可以控制通常超出限制的参数,如anchorPoint和transform,以及应用动画。 ...layout
方法。我很早就对此进行了试验,但是我的代码处于错误状态,并且由于其他原因,事情无法正常进行。一旦删除所有实验/半注释代码,一切就变好了!