Swift 中的自定义对象 class
Custom object class in Swift
在我的应用程序中,我需要有很多具有相似属性的标签。假设它们都必须是绿色的。我不想每次都说 lbl.color = UIColor.greenColor()
。我如何制作自定义对象 class/struct 允许我说 var myLbl = CustomLbl()
(CustomLbl
是我的 class)。
我不确定您是否应该这样做。如果没有,我也可以通过其他方式做到这一点。
另外,在我的应用程序中我会有更多的属性,但我只选择了这个作为示例。
谢谢!
您应该使用基础 类 来创建您自己的标签、按钮等。
class YourLabel: UILabel {
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
//you can set your properties
//e.g
self.color = UIColor.colorGreen()
}
无需子类化,您只需添加一个方法即可根据需要配置标签:
func customize() {
self.textColor = UIColor.greenColor()
// ...
}
和一个创建 UILabel
实例、定制和 returns 实例的静态函数:
static func createCustomLabel() -> UILabel {
let label = UILabel()
label.customize()
return label
}
将它们放入 UILabel
扩展中即可大功告成 - 您可以使用以下方法创建自定义标签:
let customizedLabel = UILabel.createCustomLabel()
或将自定义应用于现有标签:
let label = UILabel()
label.customize()
更新:为清楚起见,必须将这 2 个方法放在扩展中:
extension UILabel {
func customize() {
self.textColor = UIColor.greenColor()
// ...
}
static func createCustomLabel() -> UILabel {
let label = UILabel()
label.customize()
return label
}
}
在我的应用程序中,我需要有很多具有相似属性的标签。假设它们都必须是绿色的。我不想每次都说 lbl.color = UIColor.greenColor()
。我如何制作自定义对象 class/struct 允许我说 var myLbl = CustomLbl()
(CustomLbl
是我的 class)。
我不确定您是否应该这样做。如果没有,我也可以通过其他方式做到这一点。
另外,在我的应用程序中我会有更多的属性,但我只选择了这个作为示例。
谢谢!
您应该使用基础 类 来创建您自己的标签、按钮等。
class YourLabel: UILabel {
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
//you can set your properties
//e.g
self.color = UIColor.colorGreen()
}
无需子类化,您只需添加一个方法即可根据需要配置标签:
func customize() {
self.textColor = UIColor.greenColor()
// ...
}
和一个创建 UILabel
实例、定制和 returns 实例的静态函数:
static func createCustomLabel() -> UILabel {
let label = UILabel()
label.customize()
return label
}
将它们放入 UILabel
扩展中即可大功告成 - 您可以使用以下方法创建自定义标签:
let customizedLabel = UILabel.createCustomLabel()
或将自定义应用于现有标签:
let label = UILabel()
label.customize()
更新:为清楚起见,必须将这 2 个方法放在扩展中:
extension UILabel {
func customize() {
self.textColor = UIColor.greenColor()
// ...
}
static func createCustomLabel() -> UILabel {
let label = UILabel()
label.customize()
return label
}
}