Я хочу настроить высоту и ширину searchBar
в моем приложении. Я попробовал какое-то решение от SO, но что-то не так в настройке ширины и высоты панели поиска. Когда я собираю и запускаю приложение, изображение ниже выглядит как мой searchBar
, как я и хотел выглядеть. Высота 70, ширина 714.
Но когда я нажал searchBar
и начал печатать текст, размер уменьшился до высоты. Пожалуйста, смотрите 2-е изображение ниже.
Затем, когда я нажал кнопку отмены, он вернулся к виду по умолчанию UISearchBar
. Пожалуйста, смотрите 3-е изображение ниже.
Как я могу изменить ширину и высоту searchBar
навсегда, не испытывая автоматическую настройку во время ввода текста или нажатия кнопки отмены. Пожалуйста, посмотрите на мои коды для справки. Надеюсь, ты сможешь мне помочь. Спасибо.
private var searchBar: UISearchBar!
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
configureSearchBar()
searchController.searchBar.frame = CGRect(x: 15, y: 100, width: 714, height: 100)
}
override func viewDidAppear(_ animated: Bool) {
let searchTextField: UITextField = searchController.searchBar.subviews[0].subviews.last as! UITextField
searchTextField.layer.cornerRadius = 10
searchTextField.textAlignment = NSTextAlignment.left
searchTextField.placeholder = "Search by Name, Department or Employee Number"
searchTextField.rightViewMode = UITextFieldViewMode.always
}
//MARK: Function
func configureSearchBar() {
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true
searchController.searchBar.textColor = UIColor.black
searchController.searchBar.placeholder = "Search by name, department or employee number"
searchController.searchBar.searchBarStyle = .prominent
searchController.searchBar.barTintColor = UIColor(red: 26/255.0, green: 99/255, blue: 42/255, alpha: 1.0)
searchController.searchBar.tintColor = UIColor.black
searchController.searchBar.backgroundColor = UIColor(red: 255/255.0, green: 255/255, blue: 255/255, alpha: 1.0)
searchController.searchBar.setImage(#imageLiteral(resourceName: "search"), for: .search, state: .normal)
let margins = searchController.searchBar.layoutMarginsGuide
searchController.searchBar.leadingAnchor.constraint(equalTo: margins.leadingAnchor, constant: 20).isActive = true
searchController.searchBar.isTranslucent = true
if #available(iOS 11.0, *) {
searchController.searchBar.heightAnchor.constraint(equalToConstant: 100).isActive = true
}
self.ParticipantTableView.tableHeaderView = searchController.searchBar
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
searchController.searchBar.layoutIfNeeded()
searchController.searchBar.layoutSubviews()
_ = searchController.searchBar.frame
let newheight: CGFloat = 70
let newWidth: CGFloat = 714
for subView in searchController.searchBar.subviews
{
for subsubView in subView.subviews
{
if let textField = subsubView as? UITextField
{
var currentTextFieldBounds = textField.bounds
currentTextFieldBounds.size.height = newheight
currentTextFieldBounds.size.width = newWidth
textField.bounds = currentTextFieldBounds
textField.borderStyle = UITextBorderStyle.roundedRect
}
}
}
}
extension ParticipantsViewController: UISearchResultsUpdating {
func updateSearchResults(for searchController: UISearchController) {
filterContentForSearchText(searchText: searchController.searchBar.text!)
}
}
extension UISearchBar {
var textColor: UIColor? {
get {
if let textField = self.value(forKey: "searchField") as? UITextField {
return textField.textColor
}else {
return nil
}
}
set (newValue) {
if let textField = self.value(forKey: "searchField") as? UITextField {
textField.textColor = newValue
textField.font = UIFont(name: "HelveticaNeue", size: 25.0)
}
}
}