2012-04-13 29 views
3

我有一个UIView子类,它被分配给UITableVieCell的backgroundView。在我的UIView子类中,我在initWithFrame:方法中添加了2个CALayers。将CALayer添加到UIView并具有重新绘制方向更改的功能

关于方位改变,细胞高度改变,我需要重新调整CALayers的位置;基本上重绘。

由于CALayers是在initWithFrame:方法中添加的,我不能通过调用setNeedsDisplay来重新绘制它们。

我是新来的CALayers工作,不知道什么是正确的方式来做到这一点。如何添加我的CALayer以便让他们重新定位方向更改/或任何可能会改变尺寸的事件?

回答

3

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

在CoreAnimation中,如果您是子类化层,那么也有一个layoutSublayers方法。

希望这会有所帮助。

+0

尽管我最终重写了'drawRect:'并以完全不同的方式来完成,我试过了你的方式并且工作正常。感谢您的帮助,请牢记这一点。 – KDaker 2012-04-17 06:24:10

4

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

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

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

完成后请不要忘记removeObserver:self