0

UITableViewCell のサブクラスがあり、イベントが発生したときにいくつかのカスタム アニメーションを提供したいと考えています。私は同じアニメーションを受け取り続けた理由を理解するのに苦労してきました (私は UITableViewRowAnimationFade を想定しています。セルが消えて、その下のセルがスライドしただけです)。最終的に問題を掘り下げることにしました。セルのサイズを 320 未満に設定すると (または、現在表示している画面のサイズとまったく同じであると想定しています)、このデフォルトのアニメーションにフォールバックすることがわかりました。

カスタム セルはフローティング ボックスのようなもので (セクションごとに 1 つのセルがあり、多くのセクションがあります)、そのように設定します。

self.frame = CGRectMake(5, self.frame.origin.y, 310, self.frame.size.height);
self.contentView.frame = CGRectMake(0, 0, 310, self.frame.size.height);

しかし、毎回デフォルトのアニメーションを取得します。に変更すると

self.frame = CGRectMake(5, self.frame.origin.y, 320, self.frame.size.height);
self.contentView.frame = CGRectMake(0, 0, 320, self.frame.size.height);

さまざまなアニメーションがうまく機能します。

これがなぜなのか、誰にも手がかりがありますか?このように動作することを意図しており、セルのセットアップ方法を変更する必要があるか、回避策があるかどうか疑問に思っています。

ありがとう。

編集:スクリーンショット

ここに画像の説明を入力

4

1 に答える 1

1

contentView.background の色をクリアにすると、セル自体が完全に透明になります。次に、背景色を持つ contentView にビューを追加します。これは、左右 (および場合によっては上下) に挿入するフレームを持つビューです。[現在、ほぼ同じことを行っています - ストア内のアプリの新機能のために]。このビューを containerView と呼びましょう (他のすべてのビューが含まれるため)。clipsContentsToBounds プロパティを設定して、サブビューが「はみ出す」ことができないようにすることもできます。

その後、コンテナー ビューにビューを追加できます。私は常にセルをリサイクルするので、すべてのコンテナー サブビューにタグ値を設定して、それらを簡単に見つけて適切なプロパティ (画像、テキスト、色など) を設定できるようにします。

于 2012-10-12T11:26:14.930 に答える