UIScrollView:806k图像是否过于处理? (崩溃,内存不足)?

时间:2010-05-06 02:59:28

标签: iphone memory uiscrollview

我正在将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];

    }

2 个答案:

答案 0 :(得分:2)

iPhoneOS上的UIImages限制为1024x1024。如果你想解决这个问题,我认为唯一的方法是使用CATiledLayer

答案 1 :(得分:1)

我不确切(确切地说)这是多么准确,但我经常使用64 MB物理内存作为目标iPhone OS时的指南(因此试图将使用量限制在一半)。话虽如此:原始分配大小不是问题。

可能能够通过使用CGImageRef(较低级别的不透明图像类型)解决问题 - 基本上由UIImage包装。

正如另一张海报所述,该示例超出了允许的最大图像大小。没有设备(iPhone / iPod)支持该比例的图像,因此可能值得考虑调整大小/分割。