将图像视图加载到ScrollView和性能中

时间:2010-01-01 17:31:54

标签: iphone cocoa-touch uitableview uiscrollview

我有一个带有三个UIScrollViews的UIView。我加载每个已经分配了图像的自定义UIImageViews。自定义UIImageViews很简单,只引入了一些新属性,可以跟踪滚动视图中的图像视图。

图像从磁盘加载速度非常快。下面的代码执行速度非常快,但我必须在每个imageview上等待大约六秒钟才能在滚动视图中出现任何内容。如果我尝试加载所有图片,应用程序将崩溃

Program received signal:  “0”.

通常是内存不足错误。这些照片来自手机的照片库。查看模拟器中使用的图像,它们的范围从213KB到401KB。我显然做错了什么但不确定是什么。

我可能会使用tableview,因为它确实允许分页,但我不确定tableview是否会有更好的性能。我认为scrollview问题是所有的图像视图必须在滚动视图中一次加载而不是懒惰。由于图像视图已经加载到(单例)字典中,为什么将它们加载到滚动视图中需要这么长时间?所有UI都在IB中完成。

总的来说,有更好的方法吗?

以下是将图像视图加载到scrollviews中的代码:

- (void) addImageViewsToScrollView:(NSMutableDictionary*)imageViews scrollView:(UIScrollView*)scrollView
{

int widthRunningTotal = 0;
int count = 0;

for(NSString *s in [imageViews allKeys]){
    CustomImageView *myImageView = [imageViews valueForKey:s];
    myImageView.imageName = s;
    myImageView.imageId = count;
    myImageView.frame = CGRectMake(widthRunningTotal, 0, 160, 100);
    myImageView.contentMode = UIViewContentModeScaleAspectFit;
    [scrollView addSubview:myImageView];
    widthRunningTotal += 160;
    count++;
}
scrollView.contentSize = CGSizeMake(widthRunningTotal, 100);
}

1 个答案:

答案 0 :(得分:0)

这段代码多久被调用一次?我没有看到你删除现有子视图的任何地方,所以如果这种情况多次发生,你最终会得到很多子视图。