Как изменить толщину границы UISearchBar? - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь сделать так, чтобы моя строка поиска выглядела так enter image description here

Белый фон с тонкой серой каймой.

В Xcode я могу установить Search style по умолчанию (что дает белый фон) и Bar tint в серый (что дает серую рамку.)

Но результат, который я получаю, это

enter image description here

Как мне изменить толщину стержня, чтобы отразить дизайн, на который я иду?

(также есть ли способ изменить только шрифт панели поиска? Я нашел только способы изменить размер шрифта)

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Выполните следующие шаги -

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.

Надеюсь, этот метод также помогает.

0 голосов
/ 26 марта 2019

Стиль UISearchBar.Style.minimal не предоставляет цвета фона или изображения по умолчанию

и используйте UITextFiled вместо панели поиска, чтобы вы могли настроить расположение значка

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

YourTextFiled.rightViewMode = UITextField.ViewMode.always
...