Ios 半透明的UINavigationBar无法延伸到屏幕顶部

Ios 半透明的UINavigationBar无法延伸到屏幕顶部,ios,uinavigationcontroller,uinavigationbar,Ios,Uinavigationcontroller,Uinavigationbar,我想制作一个红色半透明的UINavigationBar(用于iOS9),我发现以下代码是必不可少的: navController.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) navController.navigationBar.shadowImage = UIImage() navController.navigationBar.backgroundColor = UIColo

我想制作一个红色半透明的UINavigationBar(用于iOS9),我发现以下代码是必不可少的:

    navController.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
    navController.navigationBar.shadowImage = UIImage()
    navController.navigationBar.backgroundColor = UIColor(red: 1.0,green: 0.3,blue: 0.3,alpha: 0.9)
    navController.navigationBar.translucent = true
如果我只是创建了一个UINavigationBar(而不是创建一个UINavigationController),它就可以正常工作,但在创建UINavigationController时,它看起来是这样的

我发现罪魁祸首是行
navController.navigationBar.setBackgroundImage(UIImage(),forBarMetrics:.Default)
,但如果我将其删除,则该条如下所示:

那么我该如何解决这个问题呢?(我正在以编程方式创建UINavigationController,对于无法嵌入图像带来的不便,我深表歉意)

编辑:

为了获得所需颜色的半透明背景,需要对UINavigationBar进行子类化。看看这个答案:

在此处添加必要的代码以供参考:

@interface UnderlayNavigationBar : UINavigationBar

@end

@interface UnderlayNavigationBar ()
{
    UIView* _underlayView;
}

- (UIView*) underlayView;

@end

编辑:

为了获得所需颜色的半透明背景,需要对UINavigationBar进行子类化。看看这个答案:

在此处添加必要的代码以供参考:

@interface UnderlayNavigationBar : UINavigationBar

@end

@interface UnderlayNavigationBar ()
{
    UIView* _underlayView;
}

- (UIView*) underlayView;

@end


这对我还是不起作用。。它在您的设备上正常工作?对不起,我在项目中使用了自定义导航栏。从现有答案中选取相关部分。编辑答案;请看一下,让我知道它是否有效。当然,答案在Objective-C中,因此您可能需要将其转换为swift.:)这对我还是不起作用。。它在您的设备上正常工作?对不起,我在项目中使用了自定义导航栏。从现有答案中选取相关部分。编辑答案;请看一下,让我知道它是否有效。当然,答案在Objective-C中,因此您可能需要将其转换为swift.:)
UIViewController* rootViewController = ...;
UINavigationController* navigationController = [[UINavigationController alloc] initWithNavigationBarClass:[UnderlayNavigationBar class] toolbarClass:nil];
[navigationController setViewControllers:@[rootViewController]];