簡體   English   中英

如何更改UISearchBar的邊框粗細?

[英]How to change border thickness of UISearchBar?

我正在嘗試使搜索欄看起來像這樣 在此處輸入圖片說明

與一個稀薄的灰色邊界的白色背景。

在Xcode上,我可以將Search style設置為默認(提供白色背景),將Bar tint為灰色(提供灰色邊框)。

但是我得到的結果是

在此處輸入圖片說明

如何更改鋼筋的厚度以反映要進行的設計?

(此外,有沒有辦法只更改搜索欄的字體?我只找到了更改字體大小的方法)

請按照以下步驟操作-

1.從對象庫中選擇UITextField

2.拖到故事板

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的角半徑,邊框寬度,邊框顏色。

希望這種方法也有幫助。

樣式UISearchBar.Style.minimal不提供默認的背景顏色或圖像

並使用UITextFiled代替搜索欄,以便您可以自定義圖標位置

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

YourTextFiled.rightViewMode = UITextField.ViewMode.always

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM