在程序语言不断跟新的时代,2015年12月3日,swift正式开源.同时,官方也公布了Swift 3的最新消息-Swift 3 将会在2016年秋天发布!
在控制器里添加自定义控件时,到底在swift里是怎么做的呢?答案如下:
我们将自定义控件来分为三步,形成一个自定义控件三部曲,这里来讲一个自定义tabBar的例子
第一步,我们要重写
init(frame: CGRect) {
<#code#>
}
这个方法,在重写init方法时,一定要注意先要调用父类的方法:super.init(frame:frame)
注意 重写init(frame:CGRect)时,系统会默认提示,要求重写
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
上述方法,是为了防止我们在StoryBoard中设置控件而报错
第一步:
override init(frame: CGRect) {
super.init(frame: frame)
setUI() --------这个方法是第二部,用来调用而已
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
第二部,定义一个方法,来对空间添加 约束,和属性,由于这些属性是不希望在外界可以被更改的, 所以我们要定义一个私有属性的方法,
private func setUI(){
addSubview()
}
第三部,懒加载方法
lazy var centerBTN: UIButton = {
return XXXX
}()
整体代码如下// 自定义按钮---三部曲
//1.重写init(frame:CGrect)
override init(frame: CGRect) {
super.init(frame: frame)
setUI()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
//2定义一个私有方法---来添加约束和属性
private func setUI(){
addSubview(centerBTN)
}
//3-懒加载
lazy var centerBTN: UIButton = {
//定义一个btn
//定义属性
let btn = UIButton(type:UIButtonType.Custom)
// 设置按钮的属性
btn.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
btn.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
btn.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
btn.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
//设置自动适配
btn.sizeToFit()
return btn
}()