在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中使用它时,它只包括将状态栏留空,我已经尝试使用更大的图像,它不起作用。
但最重要的是,我想在导航栏中使用半透明选项,是否兼容translucid并在导航栏中显示自定义图像?
答案 0 :(得分: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 color#和UIColor,例如blueColor或redColor。 您还可以以编程方式将半透明度设置为YES。
self.navigationController.navigationBar.translucent = YES;
要回答您关于是否可以使导航栏半透明的最后一个问题,如Yanchi所说,您将只能更改实际图像的alpha。如果你想要模糊效果(iOS 7风格)它不起作用。我试过了,似乎没有办法。它只适用于纯色(使用我提到的UIColor代码)。
希望有所帮助。
答案 1 :(得分:4)
答案 2 :(得分:0)
如果您出于任何原因需要将您的背景图片用作UIColor
(有时您确实需要它):
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"navbar"]]];