导航栏和搜索控制器

时间:2016-04-03 10:13:01

标签: swift uinavigationbar ios9 uisearchbar

我希望我的导航栏和搜索栏颜色相同。我也想摆脱它们之间的发际线,但与第一个相比,这似乎是一个小问题。 导航栏属性以这种方式设置:

self.navigationController?.navigationBar.barTintColor = ColorHelper.sharedInstance.LightPink()
    if let navBarFont = UIFont(name: "HelveticaNeue-Light", size: 25.0) {
        let navBarAttributesDictionary: [String: AnyObject]? = [
            NSForegroundColorAttributeName: UIColor.whiteColor(),
            NSFontAttributeName: navBarFont
        ]
        self.navigationController?.navigationBar.titleTextAttributes = navBarAttributesDictionary
 }

搜索栏属性:

searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true
searchController.searchBar.placeholder = "Search for new friends"
tableView.tableHeaderView = searchController.searchBar
searchController.searchBar.backgroundColor = ColorHelper.sharedInstance.LightPink()
searchController.searchBar.barTintColor = ColorHelper.sharedInstance.LightPink()
searchController.searchBar.backgroundImage = UIImage()

The result

我的ColorHelper可能会为LightPink返回不同的值,但它不会。我检查了颜色的十六进制值,它是显示颜色不正确的导航栏,比它实际上要轻一点。有什么想法吗?改变.barStyle并未改变任何内容。

2 个答案:

答案 0 :(得分:1)

我认为您的NavBar中有半透明。您应该使用此代码关闭Transculent,您可以在viewDidLoad方法中使用。

self.navigationController?.navigationBar.translucent = false

您还可以在界面构建器中切换半透明。选择导航控制器,然后在文档大纲中选择导航栏,只需在属性检查器中更改取消选中半透明选项。

如果您不希望在用户点按您的SearchBar时消失您的navigationBar,请使用此功能;

searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false

答案 1 :(得分:1)

相同颜色:

我遇到了同样的问题,我通过为backroundImage设置UISearchBar(与我的UINavigationBar颜色相同的1x1像素图像)解决了这个问题。并注意transluent字段 - 它必须与您的UINavigationBar

具有相同的值

<强>分离器:

要删除导航和搜索栏之间的分隔符,您可以在AppDelegate

中使用此代码
UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: .Default)
UINavigationBar.appearance().shadowImage = UIImage()

但只有将transluent字段设置为false

才有效