以编程方式为UITextField的边框设置颜色不显示

时间:2018-06-24 07:49:08

标签: ios swift

我有一个UITextField,我希望它具有高度和圆角以及自定义边框颜色。我尝试过:

  1. 选择enter image description here

  2. 为TextField创建一个@IBOutlet:

    @IBOutlet weak var messageInputField: UITextField!
    
  3. 在viewWillAppear中,我有:

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    
        messageInputField.layer.borderColor = UIColor(red:0.95, green:0.71, blue:0.01, alpha:1).cgColor
        messageInputField.borderStyle = UITextBorderStyle.roundedRect
    }
    

输出为:

enter image description here

圆角有效,但是我在代码中指定的颜色在哪里?如何设置边框的颜色?

1 个答案:

答案 0 :(得分:1)

您必须添加messageInputField.layer.borderWidth = 1.0或任何您想要的borderWidth ...

请注意,如果要使用自定义边框,则不能使用roundedRect。对于自定义的圆形边框,请执行以下操作:

  1. 将文本字段的borderStyle属性设置为none
  2. 通过设置文本字段的图层的borderColorborderWidth添加自定义边框
  3. 要添加圆角,请将文本字段图层的cornerRadius设置为所需的值
  4. 覆盖文本字段的intrinsicContentSize(或添加高度限制)以确定默认高度
  5. 覆盖文本字段的textRecteditingRect以添加正确的插图

示例:

@IBDesignable
class CustomRoundedTextField: UITextField {

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

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

    private func sharedInit() {
        borderStyle = .none

        layer.borderColor = UIColor.orange.cgColor
        layer.borderWidth = 2
        layer.cornerRadius = 8
    }

    override var intrinsicContentSize: CGSize {
        return CGSize(width: UIViewNoIntrinsicMetric, height: 30)
    }

    override func textRect(forBounds bounds: CGRect) -> CGRect {
        return super.textRect(forBounds: bounds).insetBy(dx: 8, dy: 0)
    }

    override func editingRect(forBounds bounds: CGRect) -> CGRect {
        return super.editingRect(forBounds: bounds).insetBy(dx: 8, dy: 0)
    }

}