2013-12-16 38 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