UITextField标准样式以编程方式

时间:2018-08-16 08:15:41

标签: ios iphone swift uitextfield uikit

当我使用情节提要创建UITextField时,它看起来像下面的图片。但是,当我以编程方式创建UITextField时,它绝对没有样式。我知道我可以将自定义样式应用于文本字段,但是在以编程方式创建文本字段时,是否有一种简单的方法来获得这种标准样式?

UITextField

3 个答案:

答案 0 :(得分:2)

类似这样的东西:

menu = [dict(zip(i[::2], i[1::2])) for i in zip(view_class_keys, view_class_values, text_keys, text_values)]

编辑:

将此类添加到下面的某个位置,以便可以轻松/全局访问。

let t = UITextField()
t.frame = CGRect(x: 10, y: 20, width: self.view.frame.width - 20, height: 40)
t.layer.cornerRadius = 5
t.layer.borderColor = UIColor.lightGray.cgColor
t.layer.borderWidth = 1
t.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: t.frame.height))
t.leftViewMode = .always
t.rightView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: t.frame.height))
t.rightViewMode = .always
t.clearButtonMode = .whileEditing
self.view.addSubview(t)

然后您可以从任何需要的地方调用此class StyledTextField: UITextField { override init(frame: CGRect) { super.init(frame: frame) self.layer.cornerRadius = 5 self.layer.borderColor = UIColor.lightGray.cgColor self.layer.borderWidth = 1 self.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: t.frame.height)) self.leftViewMode = .always self.rightView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: t.frame.height)) self.rightViewMode = .always self.clearButtonMode = .whileEditing } }

UITextField

编辑2:

使用let t = StyledTextField() t.frame = CGRect(x: 10, y: 20, width: self.view.frame.width - 20, height: 40) self.view.addSubview(t) 获取所有四个边的填充。

UIEdgeInsets

答案 1 :(得分:0)

您可以从UITextField创建一个子类作为您的自定义文本字段。 接下来,您只需实例化您的自定义类,然后就可以开始了。 像这样:

class MyCustmUITextField: UITextField { 
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.layer.cornerRadius = 5
        self.layer.borderColor = UIColor.black
        self.font = UIFont.systemFont(ofSize: 20)
        self.adjustsFontSizeToFitWidth = true
        // then add whatever styles you wish
    } 
}

从那里开始,只需创建一个MyCustomUITextField的新实例

答案 2 :(得分:0)

您可以将 borderStyle 添加为 .roundedRect ,并使用白色背景。像这样:

class MyCustmUITextField: UITextField { 
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.borderStyle = .roundedRect
        self.backgroundColor = .white
    } 
}