我注意到了iPhone Mail.app和SMS.app應用程序中的這個功能,但我不確定如何自己實現它。Animate 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:在發生這種情況時不會被調用。 –