Mar*_*ark 5 core-animation calayer nsview catransaction
想象一下CALayer在其父图层的左下角绘制的一个小红框(实例)(它是图层托管的根层NSView).
当父视图的框架发生变化时,红色框应保持在屏幕上的相同位置.我这样做是通过调整它相对于父视图左下角的位置来实现的.
问题是在某些情况下会出现闪烁,我可以看到红框图层在扩展框架的左下角被绘制,然后显示在正确的位置.
我认为将框架和位置变换包装CATransaction在一起会使两个变化在一起,但这并不总是有效(文档说通过使用事务动画将同时开始,但似乎仍然存在竞争条件有时).
如何NSView在保持子图层处于感知位置的同时调整父级的框架?
示例和代码:

我自己的想法:
隐藏红色框图层,更新位置,再次显示
使用约束将其绑定到右角.问题是这个偏移也可能会改变,我将不得不更新可能导致同样闪烁问题的约束.
尝试删除您已经编写的使图层随视图移动的代码,并将其放在您要创建图层的位置。
boxLayer.autoresizingMask = kCALayerMaxXMargin | kCALayerMinYMargin;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |