Ios 如何获取ViewDidDisplay中UITextField的高度

Ios 如何获取ViewDidDisplay中UITextField的高度,ios,swift,uitextfield,Ios,Swift,Uitextfield,我正在viewdide中创建一个UITextField,我想使用CALayer使用它的高度在textfield下面画一条线。正如所料,文本字段的高度为零,因为它尚未绘制 override func viewDidAppear(_ animated: Bool) { setUpTextField() drawUnderLine() } func drawUnderLine(){ let bottomLine = CALayer() bottomLine.frame

我正在
viewdide
中创建一个
UITextField
,我想使用
CALayer
使用它的高度在textfield下面画一条线。正如所料,文本字段的高度为零,因为它尚未绘制

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)
}

您是否调用了
addSubLayer
?此外,您可能应该在
viewdilayoutsubviews
@TungVuDuc内部设置
bottomLine的框架
,我尝试了这一点,并绘制了两条线-当文本字段高度为零时,一条线在y处绘制,然后在右y位置绘制另一条线,尝试将
bottomLine
改为全局层,并将其框架设置在
viewdilayoutsubviews
@TungVuDuc中,不确定您的意思是什么啊,这有道理!