我有一個UITableViewCell
子類,它在drawRect:方法中進行繪製。整個矩形都是自定義繪製的,包括背景。 我能夠在保持滾動非常平滑的同時獲得非常複雜的單元格。定製UITableViewCell和setSelected動畫:動畫:
我的問題:每當出現視圖時,我都會撥打[table deselectRowAtIndexPath:path animated:YES];
,以符合Apple的HIG。但是,不會發生動畫。當我有一個透明的自定義視圖(用子視圖創建)時它工作正常,所以當然會出現蘋果的背景。現在它不。
我的drawRect:在「動畫時間」中調用一次,大約一半。我認爲這是因爲它將單元格的突出顯示的屬性從1設置爲0,當它降到0.5以下時,它會捕捉到0。
如何爲此過渡設置動畫?我的猜測是使用通常的beginAnimations:等等,並將我的單元格對象中的自定義浮點字段從1改爲0。這是否會將drawRect:
重複設置爲動畫?
更新 我設法讓這幾乎工作。我已經覆蓋setSelected:animated:如下所示:
- (void) setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:NO];
if (animated) {
[CATransaction begin];
CATransition* animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = 0.6;
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[view.layer addAnimation:animation forKey:@"deselectRow"];
[CATransaction commit];
}
}
如果桌面視圖在屏幕上,這個效果很好。但是,如果我從導航(後退)返回到表格視圖,而不是從選中淡入到未選中狀態,則它會從不可見狀態變爲未選狀態。什麼會導致這種情況?
那麼,如何你的執行'的setSelected:動畫:'你'UITableViewCell'子看? – 2010-10-20 23:06:28
我的問題基本上是如何編碼::) – mips 2010-10-20 23:07:01
您需要重寫該方法,以避免調用在超類上定義的代碼,並創建自己的動畫。如果您不知道如何爲Google製作動畫,請執行此操作。 – vfn 2010-10-21 03:10:26