我的图像代码是
-(IBAction)start:(id)sender
{
animation.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"Paddle 1.png"],
[UIImage imageNamed:@"Paddle 2.png"],
[UIImage imageNamed:@"Paddle 3.png"],
[UIImage imageNamed:@"Paddle 4.png"],
nil];
[animation setAnimationRepeatCount:0];
animation.animationDuration = 2.5;
[animation startAnimating];
}这是缓存太多的内存,我在前面的一个问题中被告知要将我的代码交换为
[UIImage imageWithContentsOfFile: GetImgWithoutCaching(@"Paddle 1.jpg")]和
UIImage* GetImgWithoutCaching(NSString* imgName)
{
NSString *imagePath = [[NSBundle mainBundle] pathForResource:imgName ofType:nil];
return [UIImage imageWithContentsOfFile:imagePath];
}编写代码的正确方法是什么?我是否将该代码按原样放置在我的.m中?
发布于 2014-02-17 07:41:43
首先,您应该检查是否使用视网膜图片:
BOOL isHighResolution = NO;
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
if ([UIScreen mainScreen].scale > 1) {
isHighResolution = YES;
}
}如果您使用的是视网膜图片,请在图像名称中添加@2x,如下所示:
NSString *noExtFileName = [name stringByDeletingPathExtension];
if (isHighResolution) {
if (![noExtFileName hasSuffix:@"@2x"]) {
noExtFileName = [noExtFileName stringByAppendingString:@"@2x"];
}
}
//if image only "png" type
return [[NSBundle mainBundle] pathForResource:noExtFileName ofType:@"png"];发布于 2014-02-17 06:50:55
由于GetImgWithoutCaching函数返回需要的UIImage:
-(IBAction)start:(id)sender
{
animation.animationImages = [NSArray arrayWithObjects:
GetImgWithoutCaching(@"Paddle 1.jpg"),
GetImgWithoutCaching(@"Paddle 2.jpg"),
GetImgWithoutCaching(@"Paddle 3.jpg"),
GetImgWithoutCaching(@"Paddle 4.jpg"),
nil];
[animation setAnimationRepeatCount:0];
animation.animationDuration = 2.5;
[animation startAnimating];
}https://stackoverflow.com/questions/21822520
复制相似问题