我正在将2400x1845 png图像加载到滚动视图中。该程序崩溃了内存,有没有更好的方法来处理这个? mapScrollView是IB中的UIScrollView,还有几个UIButtons。
-(void)loadMapWithName:(NSString *)mapName
{
NSString* bundlePath = [[NSBundle mainBundle] bundlePath];
UIImage *image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/path/%@", bundlePath, [maps objectForKey:mapName]]];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
CGSize imgSize = image.size;
mapScrollView.contentSize = imgSize;
[mapScrollView addSubview:imageView];
[imageView release];
[self.view addSubview:mapScrollView];
}
答案 0 :(得分:2)
iPhoneOS上的UIImages限制为1024x1024。如果你想解决这个问题,我认为唯一的方法是使用CATiledLayer。
答案 1 :(得分:1)
我不确切(确切地说)这是多么准确,但我经常使用64 MB物理内存作为目标iPhone OS时的指南(因此试图将使用量限制在一半)。话虽如此:原始分配大小不是问题。
你可能能够通过使用CGImageRef(较低级别的不透明图像类型)解决问题 - 基本上由UIImage包装。
正如另一张海报所述,该示例超出了允许的最大图像大小。没有设备(iPhone / iPod)支持该比例的图像,因此可能值得考虑调整大小/分割。