gpt4 book ai didi

ios - ScrollView 很多图片占用大量内存

转载 作者:行者123 更新时间:2023-11-28 17:56:15 25 4
gpt4 key购买 nike

我的 iPhone 应用程序包含 170 张图像。我将它们读入一个数组,并在循环中在取景器中添加一张图片,然后将 ImageView 作为 ScrollView 的 subview 。

运行我的应用程序时使用了太多内存 700mb。我尝试缩小图片的尺寸,但没有用。

我的一个 friend 说我应该只添加图片#1和#2。当用户 block 滚动到1号图片时,只显示2号图片。然后将1号图片删除从图片查看器中添加3号图片。

他说这样我可以保持正常的内存消耗。但我不明白该怎么做? :D

你能帮忙举个例子吗?提前致谢。

没有使用 UICollectionView

这是我的代码:

- (void) addImageViewToScrollView {

//create ArrayImages
NSMutableArray *tempArray = [[NSMutableArray alloc] init];

for (int x = 0; x < 170; x++) {

[tempArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",x]]];

}
self.imagesArray = [NSArray arrayWithArray:tempArray];

//Frame ScrollView in UIView
self.scrollView.contentSize =
CGSizeMake(self.scrollView.frame.size.width * self.imagesArray.count,
self.scrollView.frame.size.height);

//scrollView add subview ImageView
for (int i = 0; i < self.imagesArray.count; i++) {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
_imageView = [[UIImageView alloc] init];
_imageView.image = [self.imagesArray objectAtIndex:i];
_imageView.frame = frame;
[scrollView addSubview:_imageView];

}
self.pageControll.currentPage = 0;
self.pageControll.numberOfPages = self.imagesArray.count;
}

我决定拆分代码以提高可读性

 - (void)scrollViewDidScroll:(UIScrollView *)sender {

CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;

self.pageControll.currentPage = page;
self.imageIndex = page;

}

#pragma mark - ChangePage
- (IBAction)changePage {

CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * self.pageControll.currentPage;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:YES];
pageControlBeingUsed = YES;

}

最佳答案

您可以使用 imageWithContentsOfFile 而不是使用 imageNamed 因为 imageWithContentsOfFile 不会缓存图像。因此最好使用,以减少内存问题。

关于ios - ScrollView 很多图片占用大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33723508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com