我的项目中有名为:landing_load1 @ 2x ... landing_load4 @ 2x的文件。 (没有非视网膜文件)
此代码有效:
for(int x=1; x < 5; x++){
NSString * imageTitle = [NSString stringWithFormat:@"landing_load%i@2x", x];
UIImage * loadingImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageTitle ofType:@"png"]];
[loadingImages addObject:loadingImage];
}
但这不起作用:
for(int x=1; x < 5; x++){
NSString * imageTitle = [NSString stringWithFormat:@"landing_load%i", x];
UIImage * loadingImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageTitle ofType:nil]];
[loadingImages addObject:loadingImage];
}
这不起作用:
for(int x=1; x < 5; x++){
NSString * imageTitle = [NSString stringWithFormat:@"landing_load%i", x];
UIImage * loadingImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageTitle ofType:nil]];
[loadingImages addObject:loadingImage];
}
问题:我知道我不必明确地调用@ 2x或指定文件类型,所以除非我明确地写出整个文件名,否则任何想法都无法解决?
注意:在iPad 4上测试
答案 0 :(得分:1)
在&#39;非&#39;您未在nil
参数中说明ofType
的工作示例。
UIImage * loadingImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageTitle ofType:nil]];
更改为png
,应该这样做:)
答案 1 :(得分:1)
记录
NSString * imageTitle = [NSString stringWithFormat:@"landing_load%i", x];
意味着你有一对任何资源的图形文件 - &#34; filename.png&#34;和&#34; filename@2x.png"。 或者,它可以用作&#34;别名&#34;仅适用于&#34; filename.png&#34; 如果您只有&#34; filename@2x.png",则有两种可能的变体: 1.使用类似的东西
NSString * imageTitle = [NSString stringWithFormat:"landing_load%i@2x", x];
或拥有任何资源的两个文件(&#34; filename.png&#34;和&#34; filename@2x.png")。
答案 2 :(得分:0)
因为您正在使用
-[NSBundle pathForResource:ofType:]
方法,您需要在第二个参数中指定资源类型,您在其认为有效的代码中将其作为“png”提供。
答案 3 :(得分:0)
@ 2x作为[UIImage imageNamed:]
的一部分处理而不是作为[NSBundle pathForResource:ofType:]
的一部分。只需使用前者,您应该很高兴。