Как сделать так, чтобы панель навигации navigationItem.searchController использовала всю ширину экрана - PullRequest
0 голосов
/ 04 февраля 2019

В iOS 11 и 12 я не могу найти способ заставить панель поиска использовать всю ширину экрана.

navigationItem.searchController = searchController

Я могу добавить больше полей, используя:

    let sb = searchController.searchBar
    let selector = #selector(setter: UIScrollView.contentInset)
    if sb.responds(to: selector) {
       sb.perform(selector, with: UIEdgeInsets(top: 5, left: 0, bottom: 5, right: 35))
    }

Если я пытаюсь установить влево и вправо на 0 ... он просто использует макет по умолчанию.

Редактировать:

Приближение:

    for tf in sb.subviews.first!.subviews where tf is UITextField {      
      tf.translatesAutoresizingMaskIntoConstraints = false
      tf.widthAnchor.constraint(equalToConstant: width).isActive = true
      tf.layoutIfNeeded()
    }

Теперь я пытаюсь найти способ применить ограничения, чтобы при активном текстовом поле оставалось место для кнопки отмены (UINavigationButton)

1 Ответ

0 голосов
/ 04 февраля 2019

Вы пробовали это?

        let width = UIScreen.main.bounds.size.width
        searchBar.translatesAutoresizingMaskIntoConstraints = false
        searchBar.widthAnchor.constraint(equalToConstant: width).isActive = true

Здесь ширина строки поиска всегда будет равна полной ширине экрана устройства.

...