2017-07-18 42 views
0

我写了下面的代码来设置导航栏和视图控制器的看法:UINavigation条颜色

  1. 导航条在AppDelegate中:

    var navigationController = UINavigationController() 
    
    navigationController.viewControllers = [mainViewController] 
    
  2. MainViewController答:

    self.view.backgroundColor = UIColor.blue 
    let fullScreenRect = UIScreen.main.bounds 
    let buttonSize:CGFloat = 60 
    let viewLogButton = UIButton(frame: CGRect(x: 0, y: fullScreenRect.size.height-buttonSize, width:fullScreenRect.size.width, height: buttonSize)) 
    viewLogButton.setTitle("View Log", for: UIControlState.normal) 
    viewLogButton.setTitleColor(UIColor.white, for: .normal) 
    viewLogButton.setTitleColor(UIColor.blue, for: .highlighted) 
    viewLogButton.backgroundColor = UIColor.blue 
    viewLogButton.addTarget(self, action: #selector(viewLogButtonPressed), for: .touchUpInside) 
    self.view.addSubview(viewLogButton) 
    self.webView.frame = CGRect(x: 0, y: UIConstants.NAVIGATION_BAR_HEIGHT+UIConstants.STATUS_BAR_HEIGHT, width: fullScreenRect.size.width, height: fullScreenRect.size.height-buttonSize-UIConstants.NAVIGATION_BAR_HEIGHT-UIConstants.STATUS_BAR_HEIGHT) 
    self.view.addSubview(self.webview) 
    

导致顶部导航栏显示半透明蓝色的视图。 MainViewController A

我然后做同样在另一个的ViewController B(其是表视图控制器):

  • MainViewController B:

    let tableView = UITableView() 
    let screenSize: CGRect = UIScreen.main.bounds  
    self.view.backgroundColor = UIColor.blue 
    let screenWidth = screenSize.width 
    let screenHeight = screenSize.height 
    tableView.frame = CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight)  
    self.view.addSubview(tableView) 
    
  • MainViewController B

    我想知道为什么MainVi中有半透明的导航条ewController A但MainViewController B无法显示?

    我怎样才能让他们都显示相同的半透明颜色导航栏?

    +0

    子类NavigationController和添加自定义属性。这将在应用程序中随处可见。 – Ellen

    回答

    0

    使用此方法Globaly改变UINavigationBar的所有地方,从AppDelegate

    func setupNaviBarAppearnce() { 
    
        UINavigationBar.appearance().isOpaque = true 
        UINavigationBar.appearance().isTranslucent = true 
        UINavigationBar.appearance().barTintColor = Theme.AppMainPurpleColor 
        UINavigationBar.appearance().tintColor = UIColor.white 
        UINavigationBar.appearance().titleTextAttributes = [NSFontAttributeName:Typography.navigationTitle!,NSForegroundColorAttributeName:UIColor.white] 
    } 
    

    注意调用它:你需要修改它按照您的要求和UI

    +0

    我试过了。 isTranslucent,barTintColor在iOS10中不可用。 – user6539552

    +0

    不是'@available(iOS 3.0,*) open var isTranslucent:Bool //默认在iOS 6和更低版本上是NO。总是YES如果barStyle设置为UIBarStyleBlackTranslucent' –

    +0

    对于条形色'@available(iOS 7.0,*) open var barTintColor:UIColor? // default is nil'只需命令并点击'barTintColor' –