如何为 iPhone 5 屏幕大小命名图像?

29

4英寸视网膜屏幕的图片新命名规则是什么?

对于一个名为background.png的图片,你需要在名称后面加上@2xbackground@2x.png),这样iOS才会在使用视网膜屏幕的设备上选择该图片。

那么iPhone 5屏幕尺寸的后缀是什么?


参见 https://dev59.com/rmcs5IYBdhLWcg3w3HoG 以获取相关信息,这是唯一似乎存在的“惯例”。否则,继续像以前一样使用 @2x。 - Mark Granoff
1个回答

61
你可以使用我的#define来帮助你处理这些图像:
#define isPhone568 ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 568)
#define iPhone568ImageNamed(image) (isPhone568 ? [NSString stringWithFormat:@"%@-568h.%@", [image stringByDeletingPathExtension], [image pathExtension]] : image)
#define iPhone568Image(image) ([UIImage imageNamed:iPhone568ImageNamed(image)])

只需在您的图像上加上 -568h@2x.png 标记,并使用 iPhone568ImageNamed 来获取标准名称或 iPhone 5/new iPod 的名称。

评论中的用法示例:

self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:iPhone568ImageNamed(@"mainscreen.png")]];

如果将名称传递为“foo.png”,它最终会转换为“foo.png-568h”吗? - Joe D'Andrea
7
这个代码段定义了一个名为"iPhone568ImageNamed"的宏,它将根据当前设备是否是iPhone 5或更高版本来返回正确的图像文件名。如果是iPhone 5或更高版本,则会在原有文件名后面添加"-568h"后缀,以适应设备的高度。如果不是,它将返回原始的文件名。 - Joe D'Andrea
2
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:iPhone568ImageNamed(@"mainscreen.png")]]; 示例代码,使用背景图案设置视图背景色。 - John Riselvato
1
你是指设备旋转时吗?如果是的话,在viewDidLayoutSubviews中处理。否则,viewDidLoad也是一个不错的选择。 - Léo Natan
1
如果您想在图像和屏幕之间实现精确的1:1像素映射,那么这是不可避免的。您的建议可能会产生放大工件(例如模糊)。 - Léo Natan
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接