更改多个平台iOS

时间:2015-09-11 20:30:42

标签: ios iphone uiviewcontroller cocoapods

在移动开发方面,我仍然不知所措。

所以我正在研究一个只有普通视图控制器的.xib。我的平面设计师给了我6个不同的背景图像作为单独的文件使用。一个用于iPhone 4s,一个用于5和5,一个用于6,一个用于6+,一个用于非视网膜iPad,一个用于视网膜iPad。 .xib和图像位于CocoaPod中,它充当我们制作的几个不同应用程序之间的共享库。

我的问题是:如何正确确定将哪个图像设置为背景,因为应用程序可以运行的设备都需要不同的图像?

到目前为止我尝试过:

获取设备

-(NSString*)deviceName {
    struct utsname systemInfo;
    uname(&systemInfo);

//I set deviceType to the following return
return [NSString stringWithCString:systemInfo.machine
                          encoding:NSUTF8StringEncoding];
}

然后有很多if语句来设置背景图像:

if ([deviceType compare:@"iPhone3, 1"] == 0) {
    [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"iPhone_4"]]];
}
else if ([deviceType compare:@"iPhone5, 4"] == 0) {
    [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"iPhone_5"]]];
}

1 个答案:

答案 0 :(得分:1)

如果要为不同的屏幕尺寸指定不同的图像,其中一种解决方案是最终屏幕尺寸高度的名称图像。

例如image" DetailsBackground"

适用于iPhone 4,4s - " DetailsBackground480"

iPhone 5,5s - " DetailsBackground568"

iPhone 6 - " DetailsBackground667"

等等

然后在代码中根据你的屏幕界限加载图片:

NSString *imageName = [NSString stringWithFormat:@"BackgroundImage%.0f.png", [UIScreen mainScreen].bounds.size.height];
UIImage *backgroundImage = [UIImage imageNamed:imageName];
self.view.backgroundColor = [UIColor colorWithPatternImage:backgroundImage];

另一种解决方案是使用Image Assets。

但它更适合人像/风景和iPhone / iPad在那里你可以使用" Device Specific" + compact \ regular \任何widht +图像属性中的高度。

请查看附带的截图: enter image description here