0

我在滚动视图中创建 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];
}

有没有办法在线程中调用它。

4

2 回答 2

2

不要这样做。使用基于单元格的滚动视图子类(表格视图或集合视图)或滚动您自己的。您的内容是屏幕的宽度,因此绝对不需要一次加载 1000 个屏幕的内容。

使用基于单元格的视图,您只需创建显示屏幕所需的数量,这些视图会在屏幕出现新内容时被回收和重新配置。

于 2013-07-01T06:07:35.090 回答
1

我在滚动视图中创建 1000 个视图。

不要那样做。用户不可能一次使用1000 个视图,所以不要一次创建所有视图。WWDC 2010、2011 和 2012 中有一些不错的视频,它们涵盖了在滚动视图中平铺内容 - 看看这些视频以获得一些好主意。

滚动视图委托在滚动视图的内容移动时获取消息,您可以使用这些消息及时添加内容,使其滚动到屏幕上并在滚动后将其删除。这本质上是 UITableView 和 UICollectionView 所做的,您可以按照 jrturton 的建议使用它们中的任何一个,也可以自己遵循相同的模式。

这不仅可以加快滚动视图的创建速度,还可以使您的滚动更顺畅,并且消耗的内存比其他方式所需的要少得多。

于 2013-07-01T06:12:58.493 回答