iphone 5 和 6 的导航栏图像

Navigation bar image for iphone 5 and 6

我正在尝试为 iphone 5、6 和 6 plus 创建一个应用程序。

我已经为导航栏添加了自定义图像,但是出现问题。在 images.xcassets 中有两个插槽 2x 和 3x。

我已经知道 2x 用于 iphone 5 和 6,3x 用于 6 加。如果我在 2x 插槽中放置 iphone 5 的图像,它会太小(当我在 iphone 6 上模拟应用程序时),如果我在该插槽中放置 phone 6 的图像,它会太大(当我在 iphone 5 上运行 emulet 应用程序时)。

那么,如果我缺一个插槽,如何为 iphone 5 和 6 设置导航栏图像?我必须在那里使用条件吗?

您可以通过

这样的代码来处理它

Swift

var navBarImage: UIImage? = nil
if UIScreen.mainScreen().bounds().size.width == 375.0 {
    navBarImage = UIImage.imageNamed("yourimage-iphone6@2x").resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, 0, 0))
}
else {
    if UIScreen.mainScreen().bounds().size.width == 414.0 {
        navBarImage = UIImage.imageNamed("yourimage-iphone6plus3x").resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, 0, 0))
    }
    else {
        navBarImage = UIImage.imageNamed("yourimage-iPhone5").resizableImageWithCapInsets(UIEdgeInsetsMake(0, 0, 0, 0))
    }
}
UINavigationBar.appearance().setBackgroundImage(navBarImage, forBarMetrics: UIBarMetricsDefault)

Objective c

UIImage *navBarImage =nil;
if ([[UIScreen mainScreen] bounds].size.width==375.0f) {
    navBarImage = [[UIImage imageNamed: @"yourimage-iphone6@2x"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
}
else if ([[UIScreen mainScreen] bounds].size.width==414.0f) {
    navBarImage = [[UIImage imageNamed: @"yourimage-iphone6plus3x"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
}
else{
   navBarImage = [[UIImage imageNamed: @"yourimage-iPhone5"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

}

[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]];