2009-07-05 10 views
2

最近、割り当て済みのUIImageViewsとUIImagesを使用してイメージとしてリソースの割り当てと複製に費やす時間を最小限に抑えてレンダリング時間を節約しようとしています。UIImageViewのイメージの複数の設定

私がしようとしているのは、すべてのUIImageのマップを維持することです。各マップはユニークで、複数のUIImageViewにそれぞれ割り当てます。 ゲームが進行するにつれ、私はディスプレイからいくつかのUIImageViewを取り除き、あとでそれらを別々のプリロードされたUIImagesで再利用するかもしれません。

私はUIImageViewを初めて作成する私のような何かを:

m_ImageView = [[UIImageViewのalloc] initWithImage:initialImg];

[m_ParentView addSubview:m_ImageView];

そして、次の時間が、私は単純に画像を切り替える:

[m_ImageView.imageリリース];

[m_ImageView setImage otherSavedImg];

問題があるのは、スイッチの後に表示される新しいイメージのサイズが初期イメージのサイズと同じであることです。 私は毎回UIImageViewを再作成して問題を回避しましたが(これは時間の無駄だと思われます)、なぜこれが起こり、どうすればそれを防ぐことができるのでしょうか?

おかげで、UIImageView用

答えて

3

ドキュメント「は、このメソッドは、指定された画像のサイズに一致するように受信機のフレームを調整する。」と言います"setImage:"を呼び出すときは、単純なプロパティ設定ツールを使用します。余分な再計算は行われません。 UIImageViewのフレームのサイズを再調整する必要がある場合は、手動で行う必要があります。

あなたが与えた文脈から判断すると、これはあなたがやや頻繁に行うことになるようです。あなたがイメージを変更する必要がある時はいつでも、今

@implementation UIImageView (Resizing) 

- (void) setImage:(UIImage *)newImage resize:(BOOL)shouldResize { 
    [self setImage:newImage]; 
    if (shouldResize == YES) { 
    [self sizeToFit]; 
    } 
} 

@end 

UIImageView + Resizing.h:

@interface UIImageView (Resizing) 

- (void) setImage:(UIImage *)newImage resize:(BOOL)shouldResize; 

@end 

UIImageView + Resizing.mそのように、私はUIImageViewのカテゴリを作成することをお勧め

[myImageView setImage:anImage resize:YES]; 
+0

ねえデイブ、 0:単にUIImageView + Resizing.hと使用#IMPORT、ImageViewのサイズを変更答えをお寄せいただきありがとうございます。読んでいただきありがとうございます。私は戻ってUIImageViewのドキュメントを先に読んで、実際に次のようなことを述べています。 >イメージプロパティを設定してもUIImageViewのサイズは変わりません。画像と一致するようにビューのサイズを調整するには、sizeToFitを呼び出します。 UIImageのセットではそれほど変わっていませんが、あなたは私を1日保存しました。 -Adi – Adi

+0

Ha、sizeToFitメソッドを忘れてしまった!良い見つける。しかし、私はまだあなたの*コードを分解するように、imageとsizeToFitを設定するカテゴリを作ることをお勧めします。 –

+0

私は戻って、 "sizeToFit"を使用するように答えを変更しました。 =) –

関連する問題