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