3

backgroundViewUITableVieCellのに割り当てられているUIViewサブクラスがあります。私のUIViewサブクラスでは、initWithFrame:メソッドに2つのCALayerを追加しています。

向きを変えると、セルの高さが変わり、CALayersの位置を再調整する必要があります。基本的に再描画します。

CALayersはinitWithFrame:メソッドに追加されているため、を呼び出して再描画することはできませんsetNeedsDisplay

私はCALayersを使用するのは初めてですが、これを行う正しい方法がわかりません。向きの変更や一般的な寸法を変更する可能性のあるイベントでCALayerを再描画する方法で、CALayerを追加するにはどうすればよいですか?

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 に答える