在项目开发中,经常会遇到同一个控件被频繁的创建,可能他们之间只是某些属性值不同而已,这个时候我们可以使用工厂模式去创建这些控件,也可以使用Extension(类似于OC中Category),在这里我们介绍如何使用Category
import UIKit
extensionUILabel{
classfunc creatLabel(fontSize:CGFloat, title:String) ->UILabel{
let label =UILabel()
label.text= title
label.font= UIFont.systemFont(ofSize: fontSize)
//这里是在iOS10中,对字体的适配,一石二鸟,用这种方式对Label进行扩展,以后就不用在创建的每一个label中判断系统,然后再来适配字体
if#available(iOS10.0, *) {
label.adjustsFontForContentSizeCategory= true
}
return label
}
}
调用的时候
fileprivatelazyvar nameLabel :UILabel = {
let nameLabel =UILabel.creatLabel(fontSize:30, title:"name")
return nameLabel
}()
对比之前的方法
fileprivatelazyvar nameLabel :UILabel= {
let nameLabel =UILabel()
nameLabel.text="name"
nameLabel.font =UIFont.systemFont(ofSize:30)
if#available(iOS10.0, *) {
label.adjustsFontForContentSizeCategory = true
}
return nameLabel
}()