2012-05-15 168 views
0

我開發一個iPad應用程序上,我有一個非常大的UITableView這是我能水平滾動一個UIScrollView(約10倍的屏幕寬度和高度)以上。的UITableView/UIScrollView的滾動優化/性能

在每一個的UITableViewCell我添加各種量UIViews的。我的問題是滾動性能非常糟糕。所以我搜索了Google的解決方案,但沒有找到適合我的問題的任何東西。

我認爲問題是,當一個滾動做,但我不知道如何限制這個整個屏幕重繪...

任何人能提供一個解決方案?

謝謝。

回答

1

您將需要保持單元格的可用性,並只加載可見區域中所需的視圖。和我們做圖片延遲加載一樣。

+0

你能提供一些額外的信息嗎?鏈接或例子?謝謝 – user944351

+1

看看下面的例子,你會知道如何實現它http://developer.apple.com/library/ios/#samplecode/ScrollViewSuite/Introduction/Intro.html –

1

簡單的鍵來提高性能是不是做的時間cellForRowAtIndexpath耗時的任務。

您可以使用很多技巧來提高性能。例如,加載你的視圖在地面線程。

SO post介紹了各種招數。

+0

我應該在哪裏繪製視圖到不在cellForRowAtIndexpath中的單元格? – user944351

+0

你可以加載它懶洋洋地。我的意思是把它放在後臺線程中。緩存下一次使用。這裏的要點是,當您在cellForRowAtIndexPath中執行繁重的任務時,您肯定會遇到性能問題。 SO鏈接包含許多提高性能的提示。 – Vignesh

1

你需要做的UITableViewCell *電池=的tableView dequeueReusableCellWithIdentifier:@ 「MyIdentifier」];重新調整細胞。你應該做的就是這個,如果你還沒有:在你的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

方法

,您需要:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease]; 
} 

採取從蘋果公司的文件來看看this

希望這會有所幫助。

+0

謝謝,但我已經重用這樣的我的單元格! – user944351