今日、私は大きなアイデアか、まったくばかげていると思った何かで目が覚めました。メモリの制限により、iOS ではそのような大きな画像を読み込むことができないため、約 5k ピクセルの正方形の巨大なスクロール可能な画像を使用する iOS アプリケーションを作成する必要があります。
については知っていますCATileLayer
が、小さなラグは私の要件に適合しません。そのため、ファイルをメモリマップしてそこから画像を読み取ることができると思いました。残念ながら動作しません。抜粋したコードは次のとおりです。
NSError * __autoreleasing error = nil;
NSData * mappedData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"tigerbig" ofType:@"png"] options:NSDataReadingMappedAlways | NSDataReadingUncached error:&error];
UIImage * thebigImage =[UIImage imageWithData:mappedData];
self.imageView.image = thebigImage;
画像ビューに大きな画像を表示する必要があるまで、すべてが機能しているようです。私が覚えてUIImage
いるのは小さなラッパーでCGImage
あり、画像をレンダリングする必要があるまで画像をロードしません。
おそらく、からイメージを作成するシーケンスでNSData
、データが RAM にコピーされ、アプリがクラッシュするよりもメモリ警告がトリガーされます。そのため、 and s を
使用してさまざまな組み合わせを試しましたが、成功しませんでした。今、主なアイデアはおそらく完全に間違っていたと自分に言い聞かせています。誰かが私を正しい方向に向けることができますか?ImageIO
CGDataProvider