Как изменить толщину границы UISearchBar?

Я пытаюсь сделать так, чтобы панель поиска выглядела так Как изменить толщину границы UISearchBar?

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

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

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

Как изменить толщину границы UISearchBar?

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

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

То, что вы хотите, вероятно, является комбинацией setBackgroundImage(_:for:barMetrics:) и setSearchFieldBackgroundImage(_:for:). Вы пробовали это?

matt 25.03.2019 23:35

Разве это не для установки фонового изображения? Я просто пытаюсь изменить толщину полосы

Richard Reis 25.03.2019 23:53

@matt, какой размер изображений вы предпочитаете для SearchBar?

Parth Patel 26.03.2019 05:51

используйте минимальный стиль и установите полупрозрачный true

Sanad Barjawi 26.03.2019 08:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
215
2

Ответы 2

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

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.минимальный не обеспечивает цвета фона или изображения по умолчанию.

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

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

YourTextFiled.rightViewMode = UITextField.ViewMode.always

Другие вопросы по теме