2009-07-05 29 views
2

最近我一直試圖通過使用已分配的UIImageViews和UIImages儘量減少花費在圖像資源分配和重複上的時間來節省渲染時間。對於UIImageView的圖像的多個設置

我試圖做的是維護所有UIImages的地圖 - 每個UIImages都是唯一的,並根據遊戲引擎的需求將每個UIImage重新分配給多個UIImageView。 隨着遊戲的進展,我從顯示中刪除了一些UIImageViews,稍後可能會在不同的預裝UIImage中重用它們。

我第一次創建的UIImageView我做類似:

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

[m_ParentView addSubview:m_ImageView];

和以下倍我簡單地切換圖像:

[m_ImageView.image釋放];

[m_ImageView setImage otherSavedImg];

問題是,在切換之後,顯示的新圖像大小與初始圖像大小相同。 我每次都重新創建UIImageView(這看起來像浪費時間),繞過了這個問題,但我想知道爲什麼發生這種情況,我該如何防止它。

謝謝,

回答

3

該文檔爲的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 

現在,每當你需要改變的圖像並調整imageView的大小,只需#import UIImageView + Resizing.h並使用:

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

Hey Dave, 感謝您的答案,閱讀後,我回去閱讀UIImageView文檔正面反面,他們確實提到這樣的事情: >設置圖像屬性不會改變UIImageView的大小。調用sizeToFit來調整視圖的大小以匹配圖像。 很奇怪他們不會用UIImage設置,但嘿 - 你救了我一天。 -Adi – Adi 2009-07-05 05:25:04

相關問題