Swift 使用彩色导航栏时,搜索栏中会出现白线
单击搜索栏时,我会看到多条白线 当同时使用TabBarController和彩色栏NavigationController时会发生这种情况,但是Swift 使用彩色导航栏时,搜索栏中会出现白线,swift,uinavigationcontroller,uitabbarcontroller,uisearchbar,Swift,Uinavigationcontroller,Uitabbarcontroller,Uisearchbar,单击搜索栏时,我会看到多条白线 当同时使用TabBarController和彩色栏NavigationController时会发生这种情况,但是 仅当使用NavigationController时,它才起作用 当TabBarController和NavigationController都使用默认颜色时,它会工作 我使用以下代码行在AppDelegate中设置导航颜色: UINavigationBar.appearance().barTintColor = UIColor(rgb: 0
- 仅当使用NavigationController时,它才起作用
- 当TabBarController和NavigationController都使用默认颜色时,它会工作
我使用以下代码行在AppDelegate中设置导航颜色:
UINavigationBar.appearance().barTintColor = UIColor(rgb: 0x0277BD)
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]
我在我的SearchViewController中使用以下方法设置UISearchController:
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
// Setup the Search Controller
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search Events"
searchController.searchBar.tintColor = .white
navigationItem.searchController = searchController
definesPresentationContext = true
}
知道发生了什么吗?不确定这是否是一个令人满意的答案,但它看起来像是一个iOS错误,可能与默认添加到顶部栏的半透明效果有关。顶部栏由两部分组成(导航和搜索),在向上滑动动画期间,白色线条似乎出现在导航部分的底部边缘。如果将
navigationController?.navigationBar.isTranslucent=false
添加到viewDidLoad()
中,问题就会消失
半透明条
不透明条
为什么只有将UINavigationController
嵌入uitabarcontroller
时才会出现白线?不知道:(
isTranslucent=false
充其量只是一个解决方案,但也许已经足够了。在不放弃半透明性的情况下,一个极其肮脏的解决方案是添加一个小的“掩蔽”视图:
let rect = CGRect(x: 0, y: navigationController.navigationBar.frame.height, width: navigationController.navigationBar.frame.width, height: 1.0)
let view = UIView(frame: rect)
view.backgroundColor = /* Your matching background color */
view.autoresizingMask = [.flexibleTopMargin]
navigationController.navigationBar.addSubview(view)
将此添加到ViewDidDisplay作为一次性操作。此解决方法不会在导航转换期间完全隐藏此问题。此问题是一个bug,受此问题影响的所有人都应向Apple报告。当底部有工具栏(navigationController.toolbar)时,此问题也会出现。禁用半透明有帮助,但会影响UI和scrollview行为。这确实是一个bug,受此问题影响的每个人都应该向苹果报告。