1

自分のオブジェクトに設定されたUITableViewCellサブクラスがあります。このオブジェクトには3つのレイヤーが含まれています。すべてのレイヤーを更新する場所に実装しました。問題は自動回転です。backgroundViewUIViewUIViewCALayer- (void)layoutSubviewsCALayer

横向きモードから縦向きモードに回転すると、次のような外観上の問題が発生します。

アニメーション中、すべてのCALayerレイヤーはポートレートモードと同じくらい狭くなります。

この男は正しいようです:

向きの変更中に呼び出されると、ビューの境界は、回転の終了時layoutSubviewsに表示される境界にすでに設定されています。

出典:シングルステップ回転を使用してスムーズなアニメーションを実現する方法/回転の開始時に新しいフレームサイズを取得するにはどうすればよいですか?

では、適切な自動回転を実現するには、レイヤーをどこで更新する必要がありますか?ビューはすでにそれらを回転させているので、カスタムアニメーションを行う必要はなく、サイズを調整するだけだと思います。右?

4

1 に答える 1

2

理解した:

  1. サブクラスCALayer+サブレイヤーを追加します
  2. CALayer- (void)layoutSublayersメソッドでサブレイヤーのサイズ変更を実装する
  3. サブクラスUIView+オーバーライド+ (Class)layerClass

    + (Class)layerClass {
        return [SubclassedCALayer class];
    }
    
  4. 現在のサブクラスUIViewを設定しますbackgroundViewUITableViewCell

于 2012-04-30T20:08:12.810 に答える