ios - 如何以编程方式制作可重用的 UILabel 和 UITextField
问题描述
我想制作一个可重用的 UILabel 和 UITextField 所以它不会重复,我该怎么做?这是我的代码
let nameLabel: UILabel = {
let label = UILabel()
label.text = "Name"
label.textColor = .white
return label
}()
let nameTextField: UITextField = {
let tv = UITextField()
tv.placeholder = "Name"
tv.textColor = #colorLiteral(red: 0.6078431373, green: 0.6078431373, blue: 0.6078431373, alpha: 1)
return tv
}()
let emailLabel: UILabel = {
let label = UILabel()
label.text = "Email"
label.textColor = .white
return label
}()
let emailTextField: UITextField = {
let tv = UITextField()
tv.placeholder = "Email"
tv.textColor = #colorLiteral(red: 0.6078431373, green: 0.6078431373, blue: 0.6078431373, alpha: 1)
return tv
}()
解决方案
使用计算属性,每次访问都会返回一个新实例
var emailLabel: UILabel {
let label = UILabel()
label.text = "Default"
label.textColor = .green
view.addSubview(label)
return label
}
let em1 = emailLabel
em1.text = "dshjsdhdshdhdshjdsh"
em1.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
let em2 = emailLabel
em2.text = "dshjsdhdshdhdshjdsh"
em2.frame = CGRect(x: 0, y: 100, width: 100, height: 100)
推荐阅读
- html - DCWebGL 滑块找不到 light.hdr 文件
- c - ZeroMQ 发布者 (C) 的 CPU 使用率为 100%
- java - 通过类层次结构发生尾递归
- python - 有没有办法在python中将一个方程除以另一个方程?
- javascript - JS 错误:stringtime.match 不是函数?在尝试将持续时间从“2h 3min”字符串转换为数字时
- java - CORS Angular 8 它给了我
- javascript - 如何防止我的产品列表在父组件更新时重新呈现?
- java - Java - 将数据从 DataOutputStream 转换为 DataOutputStream 大小未知的文件
- c# - 无法投射 GenericClass
到通用类 - websocket - 如果不允许使用 websocket,则 Blazor 服务器托管显示警报