2012-04-26 15 views
1

私はUITableViewCellサブクラスを持っていて、backgroundViewは私自身のUIViewオブジェクトに設定されています。このUIViewオブジェクトには3つのレイヤーが含まれています。 - (void)layoutSubviewsを実装しました。ここで私のCALayer層をすべて更新します。問題はオートローテーションです。UITableViewCellとCALayerの自動回転問題

私は風景からポートレートモードに回転すると、この化粧品の問題があります:アニメーションの間に

は、すべて私のCALayer層は、ポートレートモードでのように狭いです。それは、この男は右のようです

layoutSubviewsは、姿勢変更時に呼び出されるときに、ビューの境界は、すでに彼らは回転の終了時にどうなるかに設定されています。

出典:だからHow to achieve smooth animation when using single-step rotation/How do I get the new frame size at the start of rotation?

、私は適切なオートローテーションを達成するために、私の層を更新する必要がありますか?ビューは既に回転しているので、カスタムアニメーションを行う必要はなく、サイズを調整するだけです。右?

答えて

2

はそれを考え出した:

+ (Class)layerClass { 
    return [SubclassedCALayer class]; 
} 

  1. サブクラスCALayerは+それ
  2. にサブレイヤを追加
  3. サブクラスUIView +それに+ (Class)layerClassをオーバーライドCALayerのに- (void)layoutSublayers方法サブレイヤのサイズ変更を実施

  4. は、私はあなたと私はこれらの指示に従ったと私は同じ問題を抱えていると思うが、私はまだ同じ問題を持っているUITableViewCell

+0

backgroundViewとしてサブクラスUIViewを設定します。回転アニメーションは、縦長から横長までうまく動作します。表のセルはすべて伸び出し、幅が広がります。ただし、ポートレートに戻ると、セルの背景が直ちにポートレートの幅にスナップし、残りのセルは縮小されて小さな幅に戻ります。あなたのコードの一部を共有して、私が紛失している微妙なものがあるかどうかを確認する機会はありますか?ありがとう。 –

+0

@GregG申し訳ありませんが、私はもうコードを持っていません。 –