Проблема в настройке нижней границы для UITextField в Swift 5 - PullRequest
3 голосов
/ 23 января 2020

Я новичок в Свифте. У меня есть два UITextFields электронная почта и пароль . Я хочу добавить только нижнюю границу к текстовым полям, и для этого я использую следующий метод,

extension UITextField {

    func setBottomBorderWithLayer() {
        self.borderStyle = .none

        self.layer.masksToBounds = false
        self.layer.shadowColor = UIColor.gray.cgColor
        self.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
        self.layer.shadowOpacity = 1.0
        self.layer.shadowRadius = 0.0
      }

}

И вот как я вызываю метод

emailTextField.setBottomBorderWithLayer()
passwordTextField.setBottomBorderWithLayer()

Теперь проблема is setBottomBorderWithLayer () метод устанавливает только нижнюю границу только для emailTextField, а не для passwordTextField. Может кто-нибудь объяснить, в чем проблема?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

Я согласен с Сайласом, но просто добавляю сюда ... Если вы хотите создать красочную нижнюю панель для текстового поля, это также работает:

import Foundation
import UIKit

class Utilities {

static func styleTextField(_ textfield:UITextField) {

    // Create the bottom line
    let bottomLine = CALayer()

    bottomLine.frame = CGRect(x: 0, y: textfield.frame.height - 2, width: textfield.frame.width, height: 2)

    bottomLine.backgroundColor = UIColor.init(red: 116/255, green: 203/255, blue: 128/255, alpha: 1).cgColor

    // Remove border on text field
    textfield.borderStyle = .none

    // Add the line to the text field
    textfield.layer.addSublayer(bottomLine)

}
0 голосов
/ 02 февраля 2020

Нам нужно больше деталей, чтобы определить, где находится ошибка, но Я предлагаю другой тип реализации , который удовлетворит вашу потребность.

Создайте класс, который расширяет из UITextField , в этом классе вы можете определить все необходимые настройки макета , , облегчающие повторное использование , так как вам нужно будет только определить класс в TextField из Storyboard -> TextField -> Identity Inspector -> Custom Class -> Class.

Identity Inspector Class added

Пример класса:

import UIKit

class BottomBorderTextField: UITextField {

    override init (frame: CGRect) {
        super.init (frame: frame)
        addBottomBorder()
    }

    required init? (coder: NSCoder) {
        super.init (coder: coder)
        addBottomBorder()
    }

    func addBottomBorder() {
        // Logic for adding style

        layer.backgroundColor = UIColor.white.cgColor
        layer.borderColor = UIColor.gray.cgColor
        layer.borderWidth = 0.0
        layer.cornerRadius = 5
        layer.masksToBounds = false
        layer.shadowRadius = 2.0
        layer.shadowColor = UIColor.black.cgColor
        layer.shadowOffset = CGSize(width: 1.0, height: 1.0)
        layer.shadowOpacity = 1.0
        layer.shadowRadius = 1.0
    }
}

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

...