我有视图控制器,我将导航栏设置为透明,如下所示:
viewController.navigationController.navigationBar.translucent = YES;
viewController.edgesForExtendedLayout = UIRectEdgeNone;
[viewController.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
对于我的UIViewController
,这种方法很好,我能够得到这个:
然而,当我使用UITableViewController
时,它并不起作用,我得到了这个:
导航栏中的灰色背景我无法摆脱。我在iOS 8.3中遇到了这个问题。我已经在iOS 7.1中对它进行了测试,并且工作正常。
修改
我尝试过设置以下内容但没有成功:
tableViewController.navigationController.navigationBar.shadowImage = [UIImage new];
tableViewController.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
tableViewController.tableView.backgroundColor = [UIColor clearColor];
答案 0 :(得分:0)
有两种方法可以做到:
1。您可以覆盖Navigation Controller类,并在视图控制器的viewDidLoad方法中指定此代码以更改UINavigationBar的颜色。
self.navigationBar.barStyle = UIBarStyle.blue // you can give color of your choice
self.navigationBar.tintColor = UIColor.whiteColor() // or UIColor clearColor
2.如果您想要普遍使用或想要在整个应用中应用相同颜色的导航栏,请在AppDelegate's
:didFinishLaunchingWithOptions
方法中使用以下代码:
UINavigationBar.appearance() .barTintColor = UIColor(red: 100.0/255.0, green: 226.0/255.0, blue: 98.0/255.0, alpha: 1.0) // you can give color of your choice
UINavigationBar.appearance().tintColor = UIColor.whiteColor() // or UIColor clearColor
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]
答案 1 :(得分:0)
我相信您还需要设置shadowImage
并清除背景颜色。我使用以下内容,它适用于所有控制器上的iOS7和iOS8。
[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0f){
self.navigationController.navigationBar.translucent = YES;
}
else{
self.navigationController.navigationBar.translucent = NO;
}
self.navigationController.view.backgroundColor = [UIColor clearColor];