【发布时间】:2015-12-20 11:44:22
【问题描述】:
我的 UIView 具有以下结构:
UIView
|- layer (CALayer)
|- depthLayer (CALayer)
|- bodyLayer (CALayer)
对于 layer 我设置了 needsDisplayOnBoundsChange = true。当我改变 UIView 的大小时,layer 会立即重绘。但是它们的子层会延迟更新(在下一次绘制迭代中)。如何同步绘制 layers 与子层 depthLayer 和 bodyLayer?
UIView:
override func drawRect(rect: CGRect) {
bodyLayer.frame = rect
depthLayer.frame = CGRectOffset(rect, 0, 5)
}
【问题讨论】:
-
您为什么不尝试覆盖 setFrame 方法并在其中设置所有帧,另外请注意,CALayers 将尝试使用关键帧动画(或其他任何名称)为 Frame Change 设置动画 - -> 要禁用动画,您应该参考这个问题:stackoverflow.com/questions/226354/…
-
谢谢!我只是用 CATransaction 将帧更新包装在 drawRect: 中。
-
不客气先生 :-)