2011-08-12 10 views
1

私はグループ化UITableView(サブクラスUITableViewCellによって作成)を持っています。私は、サブビューを追加して、ちょうどこのようサブレイヤを挿入します。編集モードでサブビュー/レイヤーを持つカスタムセルを含むグループ化されたUITableView

[self.contentView addSubview:myUILabel]; 

[self.contentView.layer insertSublayer:myCALayer]; 

行を削除するための編集モードに入ると、細胞が右に移動し、myUILabelmyCALayerはセルの国境を越えて行きますこれは醜く見えます。

私はこれを試してみました:

Grouped UITableView with custom UILabels in Editing Mode

...しかし、それは助けにはなりませんでした。

が働いた「のようなものが」私のカスタムセル

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    CGRect oldBounds = self.myCALayer.bounds; 
    CGRect newBounds = oldBounds; 
    CGPoint oldPosition = self.myCALayer.position; 
    CGPoint newPosition = oldPosition; 
    //move right 
    if (editing && !self.showingDeleteConfirmation) { 
     newBounds.size.width -=32; 
     newPosition.x -= 15; 
    } 
    //move back left 
    else if (self.editing) { 
     newBounds.size.width += 32; 
     newPosition.x += 15; 
    } 
    self.myCALayer.bounds = newBounds; 
    self.myCALayer.position = newPosition; 
    [super setEditing:editing animated:animated]; 
} 

setEditing:を上書きするために何が...しかし、アニメーションは同期的に実行されていません。何が起こるかは、編集モードに入るときにセルが右に移動している間に、まずレイヤーの幅が縮小し、位置が変化します。レイヤーは最終的にセルにフィットしますが、アニメーションは悪く見えます。

ありがとうございました!

答えて

0

レイヤーについてはわかりませんが、サブビューでスマートautoresizingMaskを設定して、contentViewのサイズがtableview(編集モードの入力時)に変更されたときに適切に再レイアウトされるようにする必要があります。

もっとhere.

編集:少しは見ていると、私はCALayeranchorPointプロパティは、あなたのサブレイヤに役立つかもしれないと思います。 (さらに、)

(これはハックのビットで、多少のパフォーマンス低下の可能性があります)、カスタムレイヤーを適切に設定されたautoresizingMaskのUIViewに設定できます。

+0

こんにちはベン、ありがとう! 'anchorPoint'を左に設定することで、編集モードに入るときに' CALayer'の幅を調整するだけです。しかし、編集モードに入るときに、削除ボタンが移動するアニメーションに同期して、幅の変更の暗黙的なアニメーションを取得するのにはまだ苦労しています。何かヒント? – cel

+0

' - [addAnimation:forKey:]'でレイヤーサイズを変更するのに 'CAAnimation'を使っていますか?そうでない場合は、http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514 –

+0

こちらをご覧ください。あまりにも多くのことを試しました。それでも私は両方のアニメーションを同時に動かすことができません... – cel

関連する問題