为了以后使用的时候方便,对于nib创建自定义view,我做了公用方法的抽取,以后再自定义的时候只需继承抽取出来的CustomView就ok了
一下是,具体的代码
class CustomView: UIView {
var contentV: UIView!
override init(frame: CGRect) {
super.init(frame: frame) //实现父初始化
contentV = loadViewFromNib()//从xib中加载视图
contentV.frame = bounds //设置约束或者布局
addSubview(contentV) //将其添加到自身中
setupUI()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
contentV = loadViewFromNib()//从xib中加载视图
contentV.frame = bounds //设置约束或者布局
addSubview(contentV) //将其添加到自身中
setupUI()
}
func loadViewFromNib() -> UIView {
let className = type(of: self)
let name = NSStringFromClass(className).components(separatedBy: ".").last
let nib = UINib(nibName:name!, bundle: Bundle(for:className))
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
return view
}
func setupUI() {
}
}
使用的时候只需要继承CustomView,然后重写setupUI方法就ok了,setupUI这个方法,是用来设置一些初始化的参数的
如下实例:
自定义一个无线轮播广告的view
1、创建一个空白的nib文件
2、新建一个继承CustomView的类CircleAdsView
3、在新建的空白nib中添加需要的控件,并设置好约束
4、关联nib和新建的类
5、只需在CircleAdsView重写setupUI就可以使用自定义的view了,可以通过xib和纯代码来初始化,其他CircleAdsView内部逻辑根据自己的需求不全就可以正常使用了