メモリ的に効率のよい管理、なのでUIImageViewにすべての画像を読み込んでaddSubViewで表示、はもちろん却下。
UIImageviewは数個に抑えておく。
もっと効率のよいやり方はあるだろうけど自分の場合は下記の方法でやりました。
NSString *imageName = [NSString stringWithFormat: @"img" ]; NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]; UIImage* img = [[UIImage alloc] initWithContentsOfFile:imagePath]; UIImageView* viewImage = [[[UIImageView alloc] initWithImage:img] autorelease];初期化は上記の方法でおk。
※以前公開していたコードはミスがあったので修正しました。
処理の途中での画像の差し替えは下記の方法。
viewImage.image = nil; NSString *imageName = [NSString stringWithFormat: @"img2"]; NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]; img = [[UIImage alloc] initWithContentsOfFile:imagePath]; viewImage.image = img; viewImage.contentMode = UIViewContentModeScaleAspectFill; [img release];とすればOK。
contentModeは画像を差し替えても初回に読み込んだアスペクト比で画像を表示してしまうので色々なアスペクト比のものを扱う場合はここでリセットしておく。
プロパティの値はここを参照。
http://d.hatena.ne.jp/rnamiki/20090226/1235667228
複数のviewを扱う場合は表示する(画面に写る)画像以外はhiddenプロパティをオフにしておく。
これで大体はおkなんじゃないかなぁ。
参考サイト
iPhone 開発 画像ロード方法3種まとめ
0 件のコメント:
コメントを投稿