2013-12-16 157 views
0

我有麻煩的表視圖和它的響應,因爲每個單元格都有scrollView和72個標籤。我知道scrollView需要首先加載所有元素,而不是在屏幕上加載,並且由於該表視圖很慢,但是有沒有辦法在每次創建標籤時分配和調用initWithFrame方法?我試圖重複使用不同框架的標籤,但它不起作用。桌面視圖內滾動視圖性能差ios

這裏是代碼,我需要優化某種方式來更快地創建標籤。

int listSize = 36; 

    for(int i=0;i<listSize;i++){ 
     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0+i*200, 0, 200, 80)]; 
     label.text = @"HELLO"; 
     label.textColor = [UIColor blackColor]; 
     label.backgroundColor = [UIColor clearColor]; 
     label.textAlignment = NSTextAlignmentCenter; 
     label.font = [UIFont fontWithName:@"ArialMT" size:18]; 
     [scrolView addSubview:label]; 

     UILabel *grayBorderInFront = [[UILabel alloc] initWithFrame:CGRectMake(2+i*200, 5, 1, scrolView.frame.size.height-10)]; 
     grayBorderInFront.text = @""; 
     grayBorderInFront.backgroundColor = [UIColor lightGrayColor]; 
     [scrolView addSubview:grayBorderInFront]; 
    } 
+0

你想才達到什麼?也許如果你向我們展示一些代碼,我們可以幫助你。 – amb

+0

我希望我的數據在滾動視圖(左側和右側)中可滾動,但我也想向下滾動低谷列表視圖。但現在,當我跌倒或跌倒時,速度太慢。 – lugonja

+0

而不是爲每個單元格創建新的標籤,您應該繼承UITableViewCell,並且只需在表格滾動時重置文本。您可以覆蓋'prepareForReuse'來重置您的單元格爲默認狀態,然後設置該行標籤的文本。 –

回答

0

將您的標籤保存在一個數組中,然後將它們添加到視圖中。或者你甚至可以緩存整個滾動視圖。

編輯: 您保留正在更新的值列表。對於在scrollview中創建的所有標籤,您設置一個標籤label1.tag = 4; (從1開始而不是0,因爲0是默認值,其他視圖也有)。

然後,在您的cellForViewAtIndexPath代替每次創建新標籤時,您都會獲得帶有[cell viewWithTag:]的標籤,並且您將獲得該標籤的引用。你唯一需要做的就是改變標籤的價值。您還可以使用該標記作爲數組中的索引:

int index = 3; // third label 
[(UILabel*)[cell viewWithTag:index+1] setText:[myLabelsArray objectAtIndex:index]]; 
+0

我已經創建了72個只用於測試的標籤。我需要一些來自服務器的數據,標籤數量是隨機數,所以我不能創建數組。 – lugonja

+0

他們多久更新一次? – Vame

+0

每次我輸入該視圖時,都會收到來自服務器的更新並顯示內容。列表和滾動在一段時間後不會刷新。 – lugonja

0

您可以始終有一個TableView,eachCell具有水平的CollectionView。

設置滾動方向財產水平和使用UIViewCollectionFlowLayout

的的CollectionView將保證您的標籤(即是細胞)被重用和你正在做一個有效的工作。

+0

我知道,但是,我的要求是iOS 5. – lugonja

+0

嗯,你也可以使用水平tableview - http://stackoverflow.com/questions/2834840/how-to-make-a-horizo​​ntal- iphone-based-table-view –

+0

基本思想是創建左側有cannel圖像的EPG和右側可滾動的section,以便用戶可以滾動槽時間軸並查看程序。我不需要整個表格滾動,只有1部分(每個單元格中的scrollView)。 – lugonja

0

幾個星期前,我使用collectionView自定義佈局實現了iPhone應用程序的EPG佈局。 在iPad應用程序中,其他開發人員使用scrollView和collectionView流佈局陣列實現了EPG。

自定義佈局工作更好。

你提到,你需要的iOS 5,因此,你可以試試下面的開源替代到集合視圖: https://github.com/steipete/PSTCollectionView