Iphone 导航栏iOS 7中的半透明自定义图像

Iphone 导航栏iOS 7中的半透明自定义图像,iphone,ios,ios7,Iphone,Ios,Ios7,在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中使用它时,它只覆盖了状态栏为空的部分,我已经尝试过使用更大的图

在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中使用它时,它只覆盖了状态栏为空的部分,我已经尝试过使用更大的图像,它不起作用


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

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

您可以尝试以下代码:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bar.png"] forBarMetrics:UIBarMetricsDefault];
为了使nav_bar.png图像也位于状态栏后面,需要将图像的高度增加20px。导航条的高度为44px

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

我建议,在iOS7上,不要使用华而不实的图形(正如Yanchi所说),只使用简单的颜色。选择白色或黑色默认值,或使用以下代码更改导航条的色调:

self.navigationController.navigationBar.barTintColor = [UIColor #Choose a colour#];
将“选择颜色”替换为UIColor,如蓝色或红色。 也可以通过编程将半透明设置为“是”

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


希望有帮助。

这里是最好的文章:


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

[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"navbar"]]];

我不确定它是否足够有效。如果我是你,我会尝试使用你的图像的alpha,但是从我所看到的来看,ios7的设计应该尽可能轻(因此导航栏中没有定制的闪光图形)