使用iphone 6自定义导航栏图像

时间:2014-10-05 14:19:58

标签: ios iphone uinavigationbar

我正在尝试调整iphone 6的应用程序。

在将自定义背景图像设置到导航栏之前,一切运行良好:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbarbg.png"] forBarMetrics:UIBarMetricsDefault];

由于此图像是针对iphone 4/5制作的,因此宽度不足。

你知道如何为iphone6设置正确的图像吗?

我试图将我的图片命名为navbarbg@3x.png或navabarbg-667h@3x.png,但它并没有改变任何内容。

有什么想法吗?

更新: 我添加了我使用的图像:

enter image description here

2 个答案:

答案 0 :(得分:5)

可能这也有帮助,它的工作正常(如果您的图像阴影或不同)您也可以使用这个但不同的图像,您必须根据设备的比例设置:

NSLog(@"width is :%f",[[UIScreen mainScreen] bounds].size.width);

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

}

[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];

你可以看到iphone6 +的下图: enter image description here 感谢。

答案 1 :(得分:4)

您应创建可调整大小的图片并将其设置为backgroundImage。根据提供的图片,您的左上角插图为82.0f个点。您可以根据需要进行调整以适应文本。

另外,请不要忘记{6}仅在iPhone 6 Plus上使用@3x图像, iPhone 6。

UIImage *backgroundImage     = [UIImage imageNamed:@"your-image-name"];
UIImage *resizableBackground = [backgroundImage resizableImageWithCapInsets:UIEdgeInsetsMake(0.0f, 82.0f, 0.0f, 0.0f)];
[self.navigationController.navigationBar setBackgroundImage:resizableBackground forBarMetrics:UIBarMetricsDefault];