2010-04-07 26 views
5

這是不是一個真正的問題,因爲我只是解決了這個問題,但我認爲這個問題的本質是很常見的許多iPhone開發者和解決方案是不是真的清楚明顯,所以我想分享我的經驗。爲了保持StackOverflow的「問題/答案」格式,我將把詳細信息放入問題和解決方案中。的UITableView與CALayer的+滾動性能掩蓋

詳情:

我有充分的tableview細胞與兩個標籤和一個自定義的撥動開關控制我從頭放在一起。如果我隱藏了切換控件,tableview像冠軍一樣滾動。但是,在顯示切換控制的情況下,iPhone 3G上的滾動顯得非常波瀾。我的tableview單元格沒有透明組件(除了圖層蒙版),我正在重複使用單元格。

自定義切換控件擴展了UIButton,它的圖層有兩個組件 - 一個UIImageView,它包含切換的滑動「開關」部分和用作蒙版的細長橢圓,背景繪製在圖層後面-drawRect:

怎麼解決呢?答案即將...

回答

6

我發現緩慢/抖動現象的來源是不必重新複合與面罩子層上滾動的到來。我猜想每次重新繪製屏幕時都必須重新繪製切換開關。

我的解決辦法是隱藏撥動開關層/掩模除非它改變狀態。當它完全處於打開或關閉位置時,我隱藏了切換開關層並將其替換爲切換開關的圖像。當用戶觸摸切換,虛擬圖像隱藏時,實際的切換開關組件顯示並將動畫執行到相反的狀態。動畫完成後,我隱藏切換開關組件並顯示虛擬圖像,確保將圖像更改爲當前狀態。這種改進的滾動性能顯着...我敢說它幾乎和原生默認的tableview單元一樣好。