【问题标题】:Swift iOS - Bottom Border on TextField initial wrong widthSwift iOS - TextField 初始宽度错误的底部边框
【发布时间】:2016-08-11 11:45:47
【问题描述】:

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

我已经为文本字段创建了一个扩展:

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

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

我是不是在某个地方弄错了?在我将设备置于纵向并返回横向后,它就可以工作了。

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

【问题讨论】:

    标签: ios swift uiview uitextfield border


    【解决方案1】:

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

    viewDidLayoutSubviews 中调用customize 可以正确缩放线条。我不确定您是否对此解决方案满意。

    【讨论】:

    • 我现在用 uiView 高度 1 和宽度等于情节提要中的文本字段来解决它。最简单的方法主要是非复合物;)
    猜你喜欢
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多