【发布时间】:2019-04-14 16:44:45
【问题描述】:
我在删除 UISearchBar、UINavigationBar 和 UIToolBar 的边框阴影时遇到问题。所以,基本上我有一个视图控制器,我在其中嵌入了一个 UISearchController,下面是一个具有 UISegmentedControl 的 UIToolbar。问题是,即使在使用外观()委托单独删除 UINavigationBar、UISearchBar、UIToolbar 的边框阴影后,边框仍然会显示在 UISearchBar 和 UIToolBar 之间。
当我进入下一个屏幕时,我观察到 UINavigationBar 没有边框阴影,因此,可以肯定正在显示的边框不是 UINavigationBar。
我还发现一个奇怪的事情,当我从 UINavigationBar 隐藏 UISearchController 时,UINavigationBar 和 UIToolBar 之间没有边界。当我隐藏 UIToolBar 时,UINavigationBar 之后也没有边框。
extension AppDelegate {
private func appearanceSetup() {
UINavigationBar.appearance().barTintColor = .appBlueColor
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
UITextField.appearance().tintColor = .appBlueColor
UISearchBar.appearance().setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
UISearchBar.appearance().barTintColor = .appBlueColor
UISearchBar.appearance().backgroundImage = UIImage()
UIToolbar.appearance().setShadowImage(UIImage(), forToolbarPosition: .any)
UIToolbar.appearance().barTintColor = .appBlueColor
UIToolbar.appearance().layer.borderWidth = 1
UIToolbar.appearance().layer.borderColor = UIColor.appBlueColor.cgColor
}
}
class HomeViewController: UIViewController {
private let searchController: UISearchController = {
let searchController = UISearchController(searchResultsController: nil)
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search"
searchController.searchBar.tintColor = .white
searchController.searchBar.barTintColor = .appBlueColor
return searchController
}()
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.searchController = searchController
}
【问题讨论】:
-
好问题。提供指向 SMALL 示例应用程序的链接可能会很好,我们可以在其中查看问题/尝试查看
-
这是我刚刚创建的demo,请克隆看看。 gitlab.com/rjt3662/borderissue 谢谢