2010-08-03 85 views
1

我有一個UIScrollView用於模擬UITableView類似的交互,因爲行比UITableView提供的要複雜一些。每行有4個UILables UIImageView和UIButton。最終的結果是很多子視圖。使用大量子視圖優化UIScrollView

即使只有10行,滾動視圖在模擬器中看起來不錯,但在iPhone 4上的幀頻相當低。這確實是一個資源消耗問題。

有沒有辦法像雙緩衝一樣優化重繪滾動?

如果不是有另一種方式來獲得可定製的UITableview功能?

感謝

+0

我會迴應以下答案中隱含的內容。如果你的視圖是「幾乎」一個表視圖(因爲它是一個垂直滾動列表),你幾乎可以肯定地做你需要的UITableView。您可以在表格視圖中擁有絕對任意的單元格,並且可以根據需要進行復雜操作。除非你真的需要,否則不要在這裏重新發明輪子。 – 2010-08-03 18:57:46

回答

2

是否每個視圖有4xUILabels,一個UIImageView和一個UIButton?

我會用自定義的UITableViewCell創建一個nib文件(你可以讓這些文件儘可能地複雜),然後你可以重用這些單元來幫助你的性能。

如何做到這一點的信息是在這裏: http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7-SW1

+1

如果滾動性能出現問題,則不應使用多個子視圖創建Cell。使用平面視圖層次結構並使用drawString等方法自定義單元格的繪圖...另外,如果可能,請使您的單元格視圖/子視圖不透明。看看Apple的一些示例代碼,他們還使用自定義繪圖而不是Nib文件來避免使用子視圖。 – iamj4de 2010-08-04 09:06:09

1

我想你也許想創建一個UITableViewCell的自定義子類的UITableView的將處理所有的重畫你。在自定義UITableViewCell中,您可以根據需要添加儘可能多的子視圖。

0

如果需要的話,您應該使用UITableView

但是,如果您的tableview單元格非常複雜,或者您希望在scrollview上啓用分頁,則應該查看Apple提供的PageContol示例代碼。簡而言之,您會在scrollViewDidScroll:中觀察移動並在可見之前加載新的「頁面」。在實踐中,這種方法對於任意長的頁面列表非常有效。