我使用以下代码显示启动画面:
UIImageView *defaultImage = [[UIImageView alloc] init];
defaultImage.frame = defaultImageFrame;
// for iOS 9 Compatability
//NSMutableArray *buttonsArray = [[NSMutableArray alloc] initWithCapacity:1];
NSMutableArray *buttonsArray = [NSMutableArray arrayWithCapacity:1];
for (int i = 1; i<=3; i++)
{
[buttonsArray addObject:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"img00%d", i] ofType:@"png"]]];
}
mAnimatedButtons = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, WIDTH_DEVICE, HEIGHT_DEVICE)];
[mAnimatedButtons setUserInteractionEnabled:NO];
[mAnimatedButtons setAnimationImages:buttonsArray];
[mAnimatedButtons setAnimationRepeatCount:0];
[mAnimatedButtons setAnimationDuration:2.0];
[mAnimatedButtons startAnimating];
[defaultImage addSubview:mAnimatedButtons];
[self.view addSubview:defaultImage];
我将删除此后的启动画面
[mAnimatedButtons stopAnimating]; //here animation stops
[mAnimatedButtons removeFromSuperview]; // here view removes from view hierarchy
mAnimatedButtons = nil;
self.defaultImage=nil;
[self.defaultImage removeFromSuperview];
[self.view.layer removeAllAnimations];
for (CALayer* layer in [self.view.layer sublayers])
{
[layer removeAllAnimations];
}
添加此代码会将内存使用量增加到300 Mb。 删除它只有100 Mb。
我也试过以下代码
self.defaultImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, WIDTH_DEVICE, HEIGHT_DEVICE)];
self.defaultImage.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"img001.png"],
[UIImage imageNamed:@"img002.png"],
[UIImage imageNamed:@"img003.png"],
nil];
//self.defaultImage.animationDuration = 1.0f;
self.defaultImage.animationRepeatCount = 0;
[self.defaultImage setAnimationDuration:2.0];
[ self.defaultImage startAnimating];
[self.view addSubview: self.defaultImage];
即使结果相同。
答案 0 :(得分:0)
图像在应用程序中使用时,可能需要比持久存储中的资产大小更多的内存。资产经常被压缩(例如JPG或PNG),但是当您使用图像时,它们会被解压缩,通常每个像素需要4个字节(分别为红色,绿色,蓝色和alpha字节)。因此,例如,当您使用图像时,iPhone 7+全屏视网膜图像可能需要14mb。因此,内存有效的技术是使用延迟加载,而不是创建UIImage对象,直到你绝对需要它们。并且,正如Jerry建议的那样,因为内存量取决于图像的大小,而不是图像视图,如果你的图像的尺寸大于你使用它们的UIImageView所要求的尺寸(即宽度和imageview的高度乘以设备的&#34;比例&#34;,您可能需要相应地调整图像大小。