Swift iOS - TextField初始错误宽度的底部边框

时间:2016-08-11 11:45:48

标签: ios swift uiview uitextfield border

我实现了一个解决方案,将一个底部边框放到一个运行良好的文本字段但我有以下问题。如果我在较大尺寸(iPad mini,iPad Pro)或横向(iPhone6,6s)上启动应用程序,则文本字段下的线条拉伸不正确。

我为textfields创建了一个扩展名:

extension UITextField {
/**
 Customize the UITextField for App

 - parameter isPasswordField: Boolean to check if this field is a password field

 - author: Simon Zwicker <simon.zwicker@gmail.com>
 */
func customize(isPasswordField: Bool) {
    let bottomLine = UIView()
    bottomLine.frame = CGRect(x: 0.0, y: self.frame.size.height - 1, width: self.frame.size.width, height: 1.0)
    bottomLine.backgroundColor = UIColor.grayColor()
    self.addSubview(bottomLine)

    self.tintColor = UIColor.grayColor()

    if isPasswordField {
        self.textColor = UIColor.blueColor()
    }
}

我在customize()

中的文本字段上调用viewWillLayoutSubviews()函数

我在某个地方犯了错误吗?在我将设备置于纵向并返回景观之后,它可以工作。

文本字段的大小初始正确,但自定义函数中的self.frame.size.width初始化太小。你知道发生了什么吗?

1 个答案:

答案 0 :(得分:2)

我能够复制你的问题,似乎在调用viewWillLayoutSubviews时,文本字段最后没有显示在屏幕上的宽度(或者没有应用约束) )。

customize中呼叫viewDidLayoutSubviews可以正确缩放该行。我不确定你对这个解决方案是否满意。