我有一个带有三个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);
}
答案 0 :(得分:0)
这段代码多久被调用一次?我没有看到你删除现有子视图的任何地方,所以如果这种情况多次发生,你最终会得到很多子视图。