gpt4 book ai didi

swift - UISearchBar 与 UINavigationBar 重叠?

转载 作者:行者123 更新时间:2023-11-28 09:21:41 24 4
gpt4 key购买 nike

我以编程方式向下面的 viewController 添加了一个 UISearchBar,如下面的代码所示:

import UIKit

class BlueBookUniversalBeamsVC: UIViewController, UINavigationBarDelegate {

lazy var navigationBar = CustomUINavigationBar(rightNavBarTitle: "Sort Data", rightNavBarTitleHexColourCodeNormalState: "#333301", rightNavBarTitleHexColourCodeHighlightedState: "#FFFF05", rightNavBarButtonTarget: self, rightNavBarSelector: #selector(navigationBarRightButtonPressed(sender:)), isNavBarTranslucent: false, navBarBackgroundColourHexCode: "#CCCC04", navBarBackgroundColourAlphaValue: 1.0, navBarStyle: .black, preferLargeTitles: false, navBarDelegate: self, navBarItemsHexColourCode: "#E0E048", normalStateNavBarLeftButtonImage: "normalStateBackButton", highlightedStateNavBarLeftButtonImage: "highlightedStateBackButton", navBarLeftButtonTarget: self, navBarLeftButtonSelector: #selector(navigationBarLeftButtonPressed(sender:)), labelTitleText: "Universal Beams (UB)", titleLabelFontHexColourCode: "#FFFF52", labelTitleFontSize: 16, labelTitleFontType: "AppleSDGothicNeo-Light")

var searchBar = UISearchBar()

var isSearching = false

override func viewDidLoad() {

super.viewDidLoad()

setupSearchBar()

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.red]

view.addSubview(navigationBar)

view.addSubview(searchBar)

}

override func viewWillLayoutSubviews() {

NSLayoutConstraint.activate([

navigationBar.leftAnchor.constraint(equalTo: view.leftAnchor),

navigationBar.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),

navigationBar.rightAnchor.constraint(equalTo: view.rightAnchor)

])

}

override func viewDidLayoutSubviews() {

setupConstraints()

}

@objc func navigationBarLeftButtonPressed(sender : UIButton) {

}

@objc func navigationBarRightButtonPressed(sender : UIButton) {

}

func position(for bar: UIBarPositioning) -> UIBarPosition {

return UIBarPosition.topAttached

}

func setupSearchBar() {

searchBar.delegate = self

searchBar.translatesAutoresizingMaskIntoConstraints = false

}

func setupConstraints() {

NSLayoutConstraint.activate([

searchBar.leftAnchor.constraint(equalTo: view.leftAnchor),

searchBar.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: navigationBar.frame.size.height),

searchBar.rightAnchor.constraint(equalTo: view.rightAnchor),

])

}

}

extension BlueBookUniversalBeamsVC: UISearchBarDelegate {

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

if searchText.isEmpty == false {

filteredArrayOutOfUniversalBeamsArrayDataExtractedFromTheCsvFileUsingTheParserAsPerSearchedCharacters = universalBeamsArrayDataExtractedFromTheCsvFileUsingTheParser.filter({ $0.fullSectionDesignation.lowercased().prefix(searchText.count) == searchText.lowercased() })

isSearching = true

} else {

isSearching = false

}

}

}

但是,当我按照附图运行和测试应用程序时,可以看到 UISearchBar 与 UINavigationBar 重叠。我仍然可以点击 UINavigationBar 左右按钮,但是,由于某种原因,UISearchBar 在特定距离内与 UINavigationBar 重叠。知道为什么我会出现这种行为吗?理想情况下,我希望我的 UISearchBar 直接出现在 UINavigationBar 的下方,并且它的高度等于其中的 textField 的高度? enter image description here

最佳答案

事实证明,我只需要更改添加的 subview 的顺序,如下所示:

override func viewDidLoad() {

super.viewDidLoad()

setupSearchBar()

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.red]

view.addSubview(searchBar)

view.addSubview(navigationBar)

}

关于swift - UISearchBar 与 UINavigationBar 重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57596573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com