首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Xcode6如何为iPhone 5和6设备设置单独的@2x图像?

Xcode6如何为iPhone 5和6设备设置单独的@2x图像?
EN

Stack Overflow用户
提问于 2014-11-11 14:59:39
回答 2查看 3.2K关注 0票数 18

我想为每个设备指定不同的iPhone背景图像。像这样

代码语言:javascript
复制
iPhone 6 Plus   1242x2208 pixels    bg@3x.png
iPhone 6        750x1334  pixels    bg@2x.png
iPhone 5        640x1136  pixels    bg@2x.png
iPhone 4        640x960   pixels    bg@2x.png
iPhone 3GS      320x480   pixels    bg.png

LaunchImage中,可以使用选项为Retina HD 4.7设备指定图像。所以对于Launch Images没有问题。

.xcassets文件中,我可以选择1x2xRetina 4 2x3x。但是没有用于iPhone 6 (1334x750)设备的选项。

那么如何为iPhone 6设备提供1334x750 px镜像呢?寻找一些使用.xcassets文件的解决方案,而不是通过编程加载每个设备的图像。

我已经访问了相关的SO的问题,但没有一个是专门针对iPhone 6设备映像的答案。

iPhone 6 Plus resolution confusion: Xcode or Apple's website? for development

xcode 6 asset catalog iphone 6

EN

回答 2

Stack Overflow用户

发布于 2015-06-19 14:43:46

Images.xcassets可以选择为iPhone 5(视网膜4 @2x)、iPhone 6(@2x)和iPhone 6 plus(3x)提供单独的图像。

没有iPhone 4资源的选项(苹果可能停止了对iPhone 4的支持),而是iPhone 4也需要2倍的图像(缩放模式),但你可以做一些类似于This post的iPhone 4的操作

更新Xcode 7

现在在Xcode7中,Images.xcassets没有单独的图像选项,我们必须为所有视网膜设备使用相同的2x图像,为Retina HD设备使用3x图像

票数 1
EN

Stack Overflow用户

发布于 2015-09-03 20:41:02

如果你想在不同的设备上显式地做不同的事情,你现在需要用代码来做,比如Valar Morghulis said

代码语言:javascript
复制
NSNumber *screenWidth = @([UIScreen mainScreen].bounds.size.width);
NSString *imageName = [NSString stringWithFormat:@"image-%@", screenWidth];
UIImage *image = [UIImage imageNamed:imageName];

或者,您可以使用UIDevice类来获取该信息。它有几个带有布尔返回值的方法,您可以使用它们来获取有关设备的各种信息:

代码语言:javascript
复制
[[UIDevice currentDevice] platform]
[[UIDevice currentDevice] hasRetinaDisplay]
[[UIDevice currentDevice] hasMultitasking]

或者,您可以包含<sys/sysctl.h>和;

代码语言:javascript
复制
NSString *platform = [self platform];

if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,3"])    return @"Verizon iPhone 4";
if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5 (GSM)";
if ([platform isEqualToString:@"iPhone5,2"])    return @"iPhone 5 (GSM+CDMA)";

以此类推。您可以在here上了解设备字符串。

还有一些其他的编程方法,但到目前为止,据我所知,在接口构建器中还没有明确的方法来做到这一点。请随时指出我的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26859336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档