最近我一直在努力,以节省通过最小化的时候用一个已分配的UIImageViews和UIImages花费在资源为图像的分配和重复量渲染时间。

我尝试做的是保持地图的所有UIImages的 - 每一个独特的,并重新分配每一个到几个UIImageViews的,由游戏引擎的需求。 随着游戏的进行我从显示中删除一些的UIImageViews,后来可能重新使用它们具有不同的预加载UIImages。

我第一次创建的UIImageView我做类似:

  

m_ImageView = [[ALLOC的UIImageView] 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

现在,每当您需要更改的图像和调整ImageView的,只是#进口的UIImageView + Resizing.h及用途:

[myImageView setImage:anImage resize:YES];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top