我想更改搜索栏的范围按钮的高度。我使用调整的分段控件,并希望使范围按钮看起来相同。下面是我的范围按钮的屏幕截图,以及我想要匹配的分段控件的另一个屏幕截图。
这是我用于分段控件的代码,可能需要重新应用到搜索栏范围按钮,但不知道如何:
filterSegmentedControl.frame = CGRect(
x: filterSegmentedControl.frame.origin.x,
y: filterSegmentedControl.frame.origin.y,
width: filterSegmentedControl.frame.size.width,
height: 22)
我当前的搜索栏范围按钮:
我的分段控件:
答案 0 :(得分:5)
分段控件不会在UISearchBar界面中公开。因此,您无法控制分段控件的帧。如果你真的想要改变框架高度,除了遍历subViews以找到UISegmentedControl然后手动设置框架之外,我没有看到任何其他方法。
这是UIView上的一个小帮助扩展,它将帮助您遍历UISearchBar中的子视图层次结构以查找UISegmentedControl。
extension UIView {
func traverseSubviewForViewOfKind(kind: AnyClass) -> UIView? {
var matchingView: UIView?
for aSubview in subviews {
if aSubview.dynamicType == kind {
matchingView = aSubview
return matchingView
} else {
if let matchingView = aSubview.traverseSubviewForViewOfKind(kind) {
return matchingView
}
}
}
return matchingView
}
}
然后您可以使用此方法手动将帧设置为找到的分段控件,这将是这样的,
if let segmentedControl = searchBar.traverseSubviewForViewOfKind(UISegmentedControl.self) {
var segmentedControlFrame = segmentedControl.frame
segmentedControlFrame.size.height = 70
segmentedControl.frame = segmentedControlFrame
}
答案 1 :(得分:0)
您可以访问左侧图片视图,如下图所示,它是搜索栏的UITextField的子视图
if let textField: UITextField = self.searchBar?.valueForKey("searchField") as? UITextField {
if let searchIconImageView = textField.leftView as? UIImageView {
searchIconImageView.frame = CGRect(x:0,y:0,width:14,height:14)
}
}