質問

最近、私はすでに割り当てられUIImageViewsとUIImagesを用いて画像などのリソースの割り当てと重複に費やす時間の量を最小化することによって、レンダリング時間を節約しようとしてきます。

それぞれのユニークな、そしてゲームエンジンからの需要によって、いくつかのUIImageViewsに各1を再割り当て -

私は何をしようとすると、すべてのUIImagesのマップを維持しています。 ゲームが進むにつれて、私は別のプリロードUIImagesでそれらを再利用するかもしれない、後で表示からいくつかのUIImageViewsを削除し、かつます。

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

  

m_ImageView = [[UIImageView ALLOC] initWithImage:initialImg];

     

[m_ParentView addSubview:m_ImageView];

そして、私は単純に画像を切り替え、次の回:

  

[m_ImageView.imageリリース];

     

[m_ImageView setImage otherSavedImg];

の問題は、スイッチの後、表示される新しい画像サイズは、初期画像のサイズと同一であることです。 私はUIImageViewに(時間の無駄のように思える)するたびに再作成することによって、問題をバイパスしますが、この問題が発生し、どのように私はそれを防ぐことができますなぜ私は両方を疑問に思ってます。

おかげで、

役に立ちましたか?

解決

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

それはあなたがやや頻繁にやっているよなものになるだろうように

あなたが与えた文脈から判断して、これがそうです。そのため、私はUIImageViewのカテゴリを作成することをお勧めします:

UIImageView + Resizing.hます:

@interface UIImageView (Resizing)

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

@end

UIImageView + Resizing.mます:

@implementation UIImageView (Resizing)

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

@end

さて、あなたはイメージを変え、単にUIImageView + Resizing.hと使用#IMPORT、ImageViewのサイズを変更する必要があるときます:

[myImageView setImage:anImage resize:YES];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top