У меня есть табличный вид, который я бы хотел найти. Я понимаю, как это сделать, но есть ли способ, которым я могу иметь элемент кнопки панели, который расширяется до строки поиска (определенной ширины) прямо внутри моего заголовка представления таблицы? Например, могу ли я сделать что-то вроде ниже в swift?Swift Расширяемая панель поиска в заголовке?
ответ
Вот рабочий пример:
class ExpandableView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .green
translatesAutoresizingMaskIntoConstraints = false
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override var intrinsicContentSize: CGSize {
return UILayoutFittingExpandedSize
}
}
class ViewController: UIViewController {
var leftConstraint: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
assert(navigationController != nil, "This view controller MUST be embedded in a navigation controller.")
// Expandable area.
let expandableView = ExpandableView()
navigationItem.titleView = expandableView
// Search button.
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .search, target: self, action: #selector(toggle))
// Search bar.
let searchBar = UISearchBar()
searchBar.translatesAutoresizingMaskIntoConstraints = false
expandableView.addSubview(searchBar)
leftConstraint = searchBar.leftAnchor.constraint(equalTo: expandableView.leftAnchor)
leftConstraint.isActive = false
searchBar.rightAnchor.constraint(equalTo: expandableView.rightAnchor).isActive = true
searchBar.topAnchor.constraint(equalTo: expandableView.topAnchor).isActive = true
searchBar.bottomAnchor.constraint(equalTo: expandableView.bottomAnchor).isActive = true
}
@objc func toggle() {
let isOpen = leftConstraint.isActive == true
// Inactivating the left constraint closes the expandable header.
leftConstraint.isActive = isOpen ? false : true
// Animate change to visible.
UIView.animate(withDuration: 1, animations: {
self.navigationItem.titleView?.alpha = isOpen ? 0 : 1
self.navigationItem.titleView?.layoutIfNeeded()
})
}
}
Что делать, если я хочу сохранить навигационную панель, которая уже существует? (У меня есть кнопка меню на другой стороне) –
Я предлагаю вам играть с константой 'leftConstraint', чтобы ваша кнопка меню никогда не была закрыта панелью поиска. Кроме того, измените все вхождения 'greenColor' на' clearColor', чтобы отобразить нормальную навигационную панель внизу (ваша исходная панель навигации находится внизу). – paulvs
Спасибо за отличный пример. Я скопировал ваш пример кода, чтобы проверить его, но я получаю странный результат. Кажется, что поисковая панель расширяется от центра при открытии и прячется справа при закрытии (как если бы левое ограничение удалялось и * затем * ограничение ширины активировалось, хотя оба они были триггров в одном блоке анимации Вот gif того, что я получаю с указанным выше кодом https://media.giphy.com/media/xUOxeVUTJPfggxG0nK/giphy.gif Я попытался сделать некоторые коррективы и подошел близко, но мне бы хотелось посмотреть, если есть лучший способ получить вышеуказанный результат. – Eden
- 1. Панель поиска позиционирования на заголовке
- 2. Расширяемая панель div
- 3. Расширяемая панель Nav в CSS?
- 4. Расширяемая форма поиска (CSS)
- 5. Реализация Панель поиска функциональность - Swift
- 6. Панель поиска в таблице View Swift
- 7. Панель поиска - числовое значение фильтрации в swift
- 8. Панель поиска центра в навигационном контроллере swift
- 9. Липкая панель навигации в заголовке
- 10. Material Design Lite - панель поиска в заголовке Nav
- 11. Swift autohide/показать панель поиска сверху стола
- 12. Как добавить подразделы в панель навигации в андроиде как расширяемая
- 13. Панель поиска, видимая на рабочем столе и расширяемая в мобильных устройствах
- 14. Как сделать строку поиска в заголовке?
- 15. Панель поиска поиска проблем в div
- 16. Поле поиска CodeIgniter в заголовке
- 17. Текст поиска в swift
- 18. Показать панель навигации в Swift
- 19. Панель поиска не отображается в заголовке UICollectionView при запуске моего проекта
- 20. Получить панель поиска в навигационной панели в Swift
- 21. Панель поиска в верхней части UIPickerView в Swift
- 22. ios swift Как добавить изображения в панель навигации, которые не находятся в центре/заголовке?
- 23. Панель поиска в TableView с данными ядра (с использованием Swift)
- 24. Пользовательские области поиска в Swift?
- 25. Панель поиска в приложении
- 26. Панель поиска в android
- 27. Android: Расширяемая панель навигации с видом пользовательских строк
- 28. расширяемая Индикатор
- 29. Загрузочная панель с значками в заголовке
- 30. Добавить панель поиска в таблицу View
Я считаю, что все услуги должны быть погашены. Хотите это в панели навигации или просто в верхней части окна? –
Спасибо! Внутри панели навигации, справа. –
Я только что закончил демонстрацию, но, похоже, на нее уже ответили. Если вам нужен другой вариант, не стесняйтесь отвечать, и я отправлю его. :) –