我希望在我的应用中有这样的搜索栏:
正如您所看到的,在不编辑时应该有右侧的放大镜,在编辑时应该清除按钮。没有取消按钮。
我通过继承UISearchBar创建了CustomSearchBar类:
import UIKit
class CustomSearchBar: UISearchBar {
override func layoutSubviews() {
super.layoutSubviews()
customize()
}
private func customize() {
setShowsCancelButton(false, animated: false)
placeholder = nil
barTintColor = UIColor.whiteColor()
tintColor = UIColor.blackColor()
let textField = getTextField()
textField.backgroundColor = UIColor.clearColor();
textField.font = textField.font?.fontWithSize(18.0)
textField.leftViewMode = .UnlessEditing
}
}
和UISearchController:
import UIKit
class CustomSearchController: UISearchController, UISearchBarDelegate {
lazy var _searchBar: CustomSearchBar = {
[unowned self] in
let result = CustomSearchBar(frame: CGRectZero)
result.delegate = self
return result
}()
override var searchBar: UISearchBar {
get {
return _searchBar
}
}
}
这样,我得到了合适的字体大小,背景颜色和没有取消按钮。
问题是,我无法弄清楚如何在不编辑的情况下使这个放大镜停留在文本字段的右侧。我试过this但它没有奏效。另一个问题是,当我使用setShowsCancelButton(false, animated: false)
取消取消按钮时,它也会使文本光标消失。
是否有可能在样机上有更大的透明和放大镜图标?