如何改变UISearchBar的边框厚度?

问题描述 投票:0回答:2

我想让我的搜索栏看起来像这个enter image description here

与稀薄的灰色边界的白色背景。

在Xcode上,我可以将Search style设置为默认值(它给出白色背景),将Bar tint设置为灰色(给出灰色边框)。

但我得到的结果就是这个

enter image description here

如何更改条的粗细以反映我想要的设计?

(还有,有办法只更改搜索栏的字体吗?我只找到了改变字体大小的方法)

ios swift xcode uisearchbar
2个回答
2
投票

按照以下步骤 -

1.从对象库中选择UITextField

2.Drag到你的故事板

3.选择none的边框样式。

4.创建一个Swift文件并在下面添加以下扩展名 -

extension UIView {

   @IBInspectable var cornerRadius: CGFloat {

    get {

        return layer.cornerRadius

    }

    set {

        layer.cornerRadius = newValue

        layer.masksToBounds = newValue > 0

    }

}

   @IBInspectable var borderWidth: CGFloat {

    get {

        return layer.borderWidth

    }

    set {

        layer.borderWidth = newValue

    }

}

   @IBInspectable var borderColor: UIColor? {

    get {

        return UIColor(cgColor: layer.borderColor!)

    }

    set {

        layer.borderColor = newValue?.cgColor

    }

  }

}



extension UIButton {

  func roundedButton(){

    let maskPAth1 = UIBezierPath(roundedRect: self.bounds,

                                 byRoundingCorners: [.topLeft , .topRight],

                                 cornerRadii:CGSize(width:8.0, height:8.0))

    let maskLayer1 = CAShapeLayer()

    maskLayer1.frame = self.bounds

    maskLayer1.path = maskPAth1.cgPath

    self.layer.mask = maskLayer1

  }

}

extension UITextField {

   func setLeftPaddingPoints(_ amount:CGFloat){

    let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))

    self.leftView = paddingView

    self.leftViewMode = .always
}

  func setRightPaddingPoints(_ amount:CGFloat) {
    let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))
    self.rightView = paddingView
    self.rightViewMode = .always
  }
}

extension UITextField {

    @IBInspectable var maxLength: Int {
    get {
        if let length = objc_getAssociatedObject(self, &kAssociationKeyMaxLength) as? Int {
            return length
        } else {
            return Int.max
        }
    }
    set {
        objc_setAssociatedObject(self, &kAssociationKeyMaxLength, newValue, .OBJC_ASSOCIATION_RETAIN)
        addTarget(self, action: #selector(checkMaxLength), for: .editingChanged)
    }
}

@objc func checkMaxLength(textField: UITextField) {
    guard let prospectiveText = self.text,
        prospectiveText.count > maxLength
        else {
            return
    }

    let selection = selectedTextRange

    let indexEndOfText = prospectiveText.index(prospectiveText.startIndex, offsetBy: maxLength)
    let substring = prospectiveText[..<indexEndOfText]
    text = String(substring)

    selectedTextRange = selection
  }
}

5.现在您可以从故事板或代码访问此扩展,以更改值并查看效果。

6.你可以改变UITextField的角半径,边框宽度,边框颜色。

希望这种方法也有帮助。


0
投票

样式UISearchBar.Style.minimal不提供默认的背景颜色或图像

并使用文本字段代替搜索栏,以便您可以自定义图标位置

YourTextFiled.rightView = UIImageView(image: UIImage(named: "search-icon"))

YourTextFiled.rightViewMode = UITextField.ViewMode.always
© www.soinside.com 2019 - 2024. All rights reserved.