我想为每个设备指定不同的iPhone背景图像。像这样
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
文件中,我可以选择1x
、2x
、Retina 4 2x
和3x
。但是没有用于iPhone 6 (1334x750)
设备的选项。
那么如何为iPhone 6设备提供1334x750 px
镜像呢?寻找一些使用.xcassets
文件的解决方案,而不是通过编程加载每个设备的图像。
我已经访问了相关的SO的问题,但没有一个是专门针对iPhone 6设备映像的答案。
iPhone 6 Plus resolution confusion: Xcode or Apple's website? for development
发布于 2014-11-11 08:05:54
像这样设置你的镜像名称;
image-320@2x//iPhone5
image-375@2x//iPhone 6
NSNumber *screenWidth = @([UIScreen mainScreen].bounds.size.width);
NSString *imageName = [NSString stringWithFormat:@"image-%@", screenWidth];
UIImage *image = [UIImage imageNamed:imageName];
发布于 2015-06-19 06: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图像
发布于 2015-09-03 12:41:02
如果你想在不同的设备上显式地做不同的事情,你现在需要用代码来做,比如Valar Morghulis said。
NSNumber *screenWidth = @([UIScreen mainScreen].bounds.size.width);
NSString *imageName = [NSString stringWithFormat:@"image-%@", screenWidth];
UIImage *image = [UIImage imageNamed:imageName];
或者,您可以使用UIDevice类来获取该信息。它有几个带有布尔返回值的方法,您可以使用它们来获取有关设备的各种信息:
[[UIDevice currentDevice] platform]
[[UIDevice currentDevice] hasRetinaDisplay]
[[UIDevice currentDevice] hasMultitasking]
或者,您可以包含<sys/sysctl.h>
和;
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上了解设备字符串。
还有一些其他的编程方法,但到目前为止,据我所知,在接口构建器中还没有明确的方法来做到这一点。请随时指出我的错误。
https://stackoverflow.com/questions/26859336
复制