我的应用有两个屏幕。我将 UIImage
对象从第一个屏幕发送到第二个屏幕,并将此图像设置为第二个屏幕中的 UIImageview
。
但是当我尝试在 UIImageview
中设置图像时,我的内存峰值达到了 116。我的图像分辨率高于 2040*2040
这是我的代码
.h 文件
@property (weak, nonatomic) IBOutlet UIImageView *aimageView;
@property (weak, nonatomic) UIImage *sourceImage;
.m 文件
- (void)viewDidLoad
{
[super viewDidLoad];
aimageView.image = sourceImage;
[aimageView setContentMode:UIViewContentModeScaleAspectFit];
sourceImage = nil;
}
最佳答案
当图像在内存中解压缩时,它会占用大量内存。
如果您正在为 iPhone 开发,最大屏幕分辨率为 640x1136 那么为什么您需要一次加载 2040x2040 图像?
如果您需要在您的应用程序中有效地处理大图像,可能值得考虑使用 CATiledLayer
。这将允许您将大图像拆分为较小的图像图 block ,然后仅加载用户希望在屏幕上看到的图 block 。
Apple 有一个示例项目,您可以找到here .
关于ios - 将高分辨率图像设置为 UIimageView 创建内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23753378/