2

在 iOS 6 中我使用了这个方法

 - (void)drawRect:(CGRect)rect 
{
// Drawing code
UIImage *image = [UIImage imageNamed: @"nav_bar.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

但是当我在 iOS 7 中使用它时,它只涵盖了将状态栏留空,我已经尝试使用更大的图像,它不起作用。

但最重要的是我想在导航栏中使用半透明选项,它是否兼容半透明并且在导航栏中有自定义图像?

4

3 回答 3

8

如果我正确理解了您的问题(抱歉,如果我没有正确理解),您也希望将导航背景图像扩展到状态栏后面。

你可以试试这段代码:

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

为了使 nav_bar.png 图像也位于状态栏的后面,您需要将 20px 添加到图像的高度。导航栏的高度为 44px。

基本上,nav_bar.png 需要宽度为 320 像素,广告高度为 64 像素。然后它将位于状态栏的后面。

我建议在 iOS 7 中,不要使用华丽的图形(正如 Yanchi 所说),而只需使用简单的颜色即可。选择默认的白色或黑色,或使用以下代码更改导航栏的颜色:

self.navigationController.navigationBar.barTintColor = [UIColor #Choose a colour#];

您将#Choose a colour# 替换为UIColor,例如blueColor 或redColor。您还可以以编程方式将半透明设置为“是”。

self.navigationController.navigationBar.translucent = YES;

要回答关于是否可以像 Yanchi 所说的那样使导航栏半透明的最后一个问题,您只能更改实际图像的 alpha。如果你想要模糊效果(iOS 7 风格)它不起作用。我试过了,似乎没有办法。它只适用于纯色(使用我提到的 UIColor 代码)。

希望有帮助。

于 2013-10-12T09:23:38.093 回答
4

这是最好的文章:

http://www.appcoda.com/customize-navigation-status-bar-ios-7/

于 2013-10-31T15:12:26.507 回答
0

如果UIColor出于任何原因需要将背景图像用作(有时确实需要它):

[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"navbar"]]];
于 2015-03-29T05:15:40.813 回答