为的UIImageView图像的多个设置
-
23-08-2019 - |
题
最近我一直在努力,以节省通过最小化的时候用一个已分配的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];