我已将当前目标升级到iPad并制作了一个通用应用程序,如果有这个问题的答案,将我的iphone应用程序调整为ipad的时间会大大减少。
此时大家都知道,如果你有一个名为“ football.png ”的图片,并希望支持Retina Display,你应该将图像的大小加倍并称之为“ football @ 2x.png ”。
我的问题是,如果有像@football@iPad_which_is_another_size.png *这样的iPad吗?
如果没有办法,我是否必须将每个图像连接到IBOutlet并以编程方式设置框架?
答案 0 :(得分:27)
在iOS 4.0及更高版本中,它是可能的 将各个资源文件标记为 仅适用于特定类型的 设备 将资源文件与a关联 特定设备,您添加自定义 修饰符字符串到其文件名。该 包含此修饰符字符串 产生具有以下内容的文件名 格式:
<basename><device>.<filename_extension>
要加载iPad特定资源,您应使用~ipad
。示例:创建名为AwesomeImage~ipad.png
的图像,并使用[UIImage imageNamed:@"AwesomeImage.png"]
加载,就像使用视网膜显示图像一样。
有关详细信息:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/Introduction/Introduction.html 在“iOS支持设备特定资源”部分。
答案 1 :(得分:2)
我认为没有办法让操作系统自动为您选择,就像Retina显示屏一样。但是,您可以创建一个方便的方法来为您返回文件名:
-(NSString*) myImageFilename:(NSString*)baseName withExtension:(NSString*)ext {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return [NSString stringWithFormat:"%@@iPadSize.%@"];
} else {
return [NSString stringWithFormat:"%@.%@"];
}
}