如何在 viewDidAppear 中获取 UITextField 的高度

How to get height of UITextField in viewDidAppear

我正在 viewDidAppear 中创建一个 UITextField,我想使用它的高度在使用 CALayer 的文本字段下方画一条线。正如预期的那样,文本字段的高度为零,因为它尚未绘制!

override func viewDidAppear(_ animated: Bool) {
    setUpTextField()
    drawUnderLine()
}

func drawUnderLine(){
    let bottomLine = CALayer()
    bottomLine.frame = CGRect(x: textField.bounds.origin.x, y: textField.bounds.origin.y + textField.bounds.size.height + 2, width: self.view.bounds.width - 100, height: 1.0)
    textField.layer.addSublayer(bottomLine)
}

我的解决方法是使用 UIView 画一条线,并将该线的顶部锚点设置为等于文本字段的底部锚点。但是,我想知道如何为将来的情况解决这个问题。

试试这个

override func viewDidAppear(_ animated: Bool) {
    setUpTextField()
    drawUnderLine()
}

let bottomLine = CALayer()
func drawUnderLine(){
    textField.layer.addSublayer(bottomLine)
}

override func viewDidLayoutSubviews() {
    bottomLine.frame = CGRect(x: textField.bounds.origin.x, y:
        textField.bounds.origin.y + textField.bounds.size.height + 2, width:
        self.view.bounds.width - 100, height: 1.0)
}