Как настроить навигационную панель поиска в Swift, чтобы она выглядела как приложение Reddit - PullRequest
0 голосов
/ 05 марта 2020

Я только начал изучать, как кодировать с помощью Swift в XCode, мне нужна помощь относительно панели поиска. Я хочу добавить панель поиска в мою панель навигации в центре, и рядом с ней я хочу добавить два элемента. До сих пор мне удавалось добавить UISearch в мою панель навигации, но как только я пытаюсь добавить элементы рядом с ней, она выдвигает мои иконки над полем поиска.

Pressed State pressed state now of my search bar

Normal Состояние normal state of search bar

Кто-нибудь знает, что добавить два пункта меню рядом с ним программно или в раскадровке? А как сделать поле поиска центрированным и немного тоньше?

Мой код сейчас:

override func viewDidLoad() {
    super.viewDidLoad()

    let searchController = UISearchController(searchResultsController: nil)
    searchController.delegate = self as? UISearchControllerDelegate

    let searchBar = searchController.searchBar
    searchBar.tintColor = UIColor.white
    searchBar.barTintColor = UIColor.white

    if let textfield = searchBar.value(forKey: "searchField") as? UITextField {
        textfield.textColor = UIColor.blue
        if let backgroundview = textfield.subviews.first {

            // Background color
            backgroundview.backgroundColor = UIColor.white

            // Rounded corner
            backgroundview.layer.cornerRadius = 10;
            backgroundview.clipsToBounds = true;
        }
    }

    if let navigationbar = self.navigationController?.navigationBar {
        navigationbar.barTintColor = UIColor.blue
    }

    navigationItem.searchController = searchController
    navigationItem.hidesSearchBarWhenScrolling = false
    }

Пример Reddit Reddit Example

1 Ответ

0 голосов
/ 05 марта 2020

Хорошо, исправил это! Просто использовал код ниже. Теперь моя следующая борьба - изменение фона текстового поля.

//SEARCH
    let searchController = UISearchController(searchResultsController: nil)
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.dimsBackgroundDuringPresentation = false
    searchController.searchBar.delegate = self as? UISearchBarDelegate


    let frame = CGRect(x: 0, y: 0, width: 300, height: 44)
    let titleView = UIView(frame: frame)
    searchController.searchBar.backgroundImage = UIImage()
    searchController.searchBar.frame = frame
    titleView.addSubview(searchController.searchBar)
    navigationItem.titleView = titleView

    }
...