3

我有一个分配给backgroundViewUITableVieCell 的 UIView 子类。在我的 UIView 子类中,我在initWithFrame:方法中添加了 2 个 CALayers。

在方向改变时,单元格的高度会改变,我需要重新调整我的 CALayers 的位置;基本上重绘。

由于在方法中添加了 CALayers,initWithFrame:我无法通过调用重绘它们setNeedsDisplay

我是使用 CALayers 的新手,不知道这样做的正确方法是什么。如何添加我的 CALayers 以让它们在方向更改/或任何可能改变一般尺寸的事件时重绘?

4

2 回答 2

4

实际上,更简单的方法是使用 KVO 来观察视图层边界属性的变化。

[self.layer addObserver:self forKeyPath:@"bounds" options:0 context:nil];

-observeValueForKeyPath:ofObject:change:context:然后在你的方法中做任何你需要的事情。

完成后不要忘记removeObserver:self

于 2012-05-04T17:43:27.460 回答
3

UIView子类中实现该- (void)layoutSubviews;方法。当视图的几何形状发生变化时,框架会调用它。您可以在那里对图层进行适当的更改。

在 CoreAnimation 中,如果您要对图层进行子类化,那么还有一个layoutSublayers方法。

希望这可以帮助。

于 2012-04-13T20:52:19.427 回答