私はSwiftに取り組んでいます。
通常のSearchBarと同様に、デフォルトではFollowing Pic(1)のように表示されます。
しかし、設計要件に従って、次のPic(2)のように変更する必要があります。
次のPic(3)のようなコードを使用してみました
**次のコードを試したところ、正しいビューが非表示になり、テキストフィールドのrightviewを表示できませんでした
完全に非表示の検索アイコン**
let searchField = (searchBar.valueForKey("_searchField") as! UITextField)
searchField.layer.cornerRadius = 15;
let searchIcon = searchField.leftView!
if (searchIcon is UIImageView) {
print("yes")
}
searchField.rightView = searchIcon
searchField.leftViewMode = .Never
searchField.rightViewMode = .Always
誰でも私が要件を取得するのを手伝ってくれる? Objective Cについても提供していただければ理解できます
Switf 5
ジェヤマヘサンの答えを参考に。
私はviewDidLayoutSubviewsがviewDidAppearよりも良いチャンスだとわかりました。 viewDidAppearでsetupSearchTextField()を呼び出すと、searchTextFieldでフラッシュの変化が見られます。
ViewDidLayoutSubviewsが最初に2回呼び出され、後で何度も呼び出されるためです。 isFirst変数を追加します。
R.string.localizable.product_name()->これは優れたリソースフレームワークです。詳細については、こちらをご覧ください。 https://github.com/mac-cain13/R.Swift
private var isFirst = true
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
guard isFirst else {
return
}
isFirst = false
setupSearchTextField()
}
private func setupSearchTextField() {
let searchTextField = searchBar.searchTextField
searchTextField.backgroundColor = .white
searchTextField.layer.borderColor = UIColor(hex: "707070").cgColor
searchTextField.layer.borderWidth = 1
searchTextField.placeholder = R.string.localizable.product_name()
let imageView = UIImageView(image: R.image.searchIcon())
searchTextField.rightView = imageView
searchTextField.rightViewMode = UITextField.ViewMode.always
//delegate
searchBar.delegate = self
}