- 在开发中,我们经常会自定义一些控件来满足实际的开发需要,比如自定义图片滚动器,照片浏览器等等。。。这里就来聊聊自定义控件的一些事儿。
代码创建
- 通过代码创建控件通常在自定义的控件类中的步骤:
1.重写UIView的init(frame:CGRect)方法,在该方法中创建子控件,并添加到自己上面;
2.写一个私有方法,设置子控件和自己的一些属性,比如颜色、文字信息等
3.在layoutSubView中,添加subView的frame
import UIKit
class RedView: UIView {
var subView: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
let subView = UIView()
self.subView = subView
self.addSubview(subView)
handleForView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
handleForView()
}
private func handleForView(){
subView.backgroundColor = UIColor.greenColor()
}
override func layoutSubviews() {
super.layoutSubviews()
subView.frame = CGRectMake(0, 0,self.frame.width*0.5,self.frame.height * 0.5)
}
}
xib/storyBoard创建
- 通过xib/storyBoard创建自定义控件的步骤:
1.重写UIView的init(coder aDecoder: NSCoder)方法
2.写一个私有方法,用来设置子空间和自己的一些属性,比如颜色,文字等。。。
3.重写awakeFromNib方法,这个方法用来辅助init(coder aDecoder: NSCoder)对控件进行初始化工作,因为通过xib或者storyBoard方式拖线的控件很可能在init方法中还没有创建,这时把对拖线的属性放在awakeFromNib方法中更为合理。
4.子控件frame通常是在xib中设置。