首页 > 解决方案 > 将子层添加到没有情节提要的 UITextField 不会设置文本字段的样式

问题描述

我决定学习在没有故事板的情况下使用 Swift。在进行切换之前,我在一个名为的文件Utilities.swift中有一个函数,该函数具有设置文本字段样式的函数,当我有一个故事板时它工作得很好。

class Utilities {

static func styleTextField(_ textfield:UITextField) {


    let bottomLine = CALayer()

    bottomLine.frame = CGRect(x: 0, y: textfield.frame.height - 2, width: textfield.frame.width, height: 2)
    bottomLine.backgroundColor = UIColor.init(red: 48/255, green: 173/255, blue: 99/255, alpha: 1).cgColor
    textfield.borderStyle = .none
    textfield.layer.addSublayer(bottomLine)

}
}

然后在我的视图控制器中,我有let firstName = UITextField()一个函数 for Utilities.styleTextField(firstName),当我有故事板时,它工作得很好。在删除故事板并以编程方式添加约束后,我可以看到文本字段,但它是默认的,没有样式。

标签: iosswiftuitextfield

解决方案


我的猜测是,此时,您还没有设置文本字段的框架,所以CALayer没有被绘制,因为它的大小是(width: 0, height: 0).

当您从 IB 获取组件时,它带有一个框架,这是您在工具中设置的那个。

在调用函数之前尝试设置框架。


推荐阅读