2013-07-01 103 views
0

我在滾動視圖中創建1000個視圖。這需要更多時間來加載視圖。在滾動視圖中創建1000個視圖需要時間

wordsDetails *wordsObj; 
for(int i = 0; i<arrayOfWords.count;i++) { 
    UIView *viewForDisplay = [[UIView alloc]initWithFrame:CGRectMake(320*i, 0, 320, 440)]; 
    UILabel *wordLabel = [[UILabel alloc]initWithFrame:CGRectMake(30, 40, 240, 40)]; 
    wordLabel.backgroundColor = [UIColor clearColor]; 
    wordLabel.textColor = [UIColor yellowColor]; 
    wordLabel.font = [UIFont fontWithName:@"Didot" size:24.0]; 
    wordsObj = [arrayOfWords objectAtIndex:i]; 
    wordLabel.text = wordsObj.word;//[NSString stringWithFormat:@"sdssds - %i",i]; 
    [viewForDisplay addSubview:wordLabel]; 

    UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(30, 100, 240, 100)]; 
    textView.text = wordsObj.meaning; 
    textView.editable = NO; 
    textView.textColor = [UIColor whiteColor]; 
    textView.font = [UIFont fontWithName:@"Didot" size:20.0]; 
    textView.backgroundColor = [UIColor clearColor]; 
    [viewForDisplay addSubview:textView]; 
    [fScrollView addSubview:viewForDisplay]; 
} 

有沒有辦法在線程中調用它。

+0

看看這個鏈接https://github.com/gmoledina/GMGridView – Leena

回答

2

不要像這樣做。使用基於單元格的scrollview子類(表格視圖或集合視圖)或滾動你自己的。您的內容是屏幕的寬度,因此絕對不需要一次加載1000個屏幕的內容。

隨着你只能創建多達需要顯示的畫面,而這些被回收和重新配置爲新的內容來自屏幕上的細胞爲基礎的觀點。

1

我創建一個滾動視圖1000點的觀點。

不這樣做。用戶不可能一次使用使用 1000個視圖,因此不要一次創建它們。 WWDC 2010,2011和2012中有一些很好的視頻,它們包括在滾動視圖中平鋪內容 - 查看一些偉大想法的內容。

滾動視圖代表獲得消息的滾動視圖的內容移動,你可以使用這些消息來的正是時候添加的內容爲它滾動到屏幕上,並刪除它,它已經滾出了。這基本上就是UITableView和UICollectionView所做的,你可以像Jrturton所說的那樣使用它們中的任何一個,或者你可以自己遵循相同的模式。

這不僅會加快您的滾動視圖的創建,它也會讓你的滾動順暢,消耗比你需要,否則要少得多的內存。

相關問題