iPhone Mail.appとSMS.appのアプリでこの機能に気がつきましたが、それを自分で実装する方法は不明です。アニメーションUITableViewCell ContentViewが編集モードに入ると消えるようにする
標準的なUITableViewでは、ユーザーが「編集」ボタンをタップして削除ボタンが所定の位置に移動すると、コンテンツビューが右にスライドするにつれて、クイックフェードトランジションが実行され、薄いバージョンの(削除ボタンが占めるスペースを考慮して)
私は当初、これが有効になっているモードを編集する場合は、次のメソッドを呼び出すことによって行われたと思った:
[self.tableView reloadRowsAtIndexPaths: [tableView indexPathsForVisibleRows] withRowAnimation: UITableViewRowAnimationFade];
、それはまた、遷移に削除ボタン自体をフェードだけでなく、すべての付属品は、細胞を観察しかし、これは正しいことはできません(それはかなり奇妙に見えると言うには十分です)。
私はコンテンツビューを強制的に再描画し、テーブルが編集モードに入ったときに新しい描画されたバージョンを古いものにフェードインさせることはどうでしょうか?
UPDATE:私の最終的な解決策は、UITableViewCellののサブクラスを作成し、その後setEditingアクセサに次のコードを適用することでした
:カレブの答えに おかげで、これは後に、私は私が何であったかを取得することができ、コードの最後のブロックであります:
-(void) setEditing: (BOOL)editing animated: (BOOL)animated
{
[super setEditing: editing animated: animated];
CATransition *animation = [CATransition animation];
animation.duration = 0.2f;
animation.type = kCATransitionFade;
//redraw the subviews (and animate)
for(UIView *subview in self.contentView.subviews)
{
[subview.layer addAnimation: animation forKey: @"editingFade"];
[subview setNeedsDisplay];
}
}
私はおそらくまた明らかにする必要があります。パフォーマンスは非常に重要なので、私のセルのcontentView内のすべてがCG(つまりdrawRect :)でレンダリングされているため、そこに描画される要素は制御できません。
ああ、そのトリックをやった!ありがとう!!! – TiM
偉大な - フォローアップのおかげで! – Caleb
これはこれをかなりカバーしているのか分かりません。上記のアプリは、編集モードの行に削除ボタン(状態== 3)が表示されているときに、同じ遷移を使用します。 setEditing:animated:これが発生したときに呼び出されません。 –