一、convenience便利方法
convenience:便利,使用convenience修饰的构造函数叫做便利构造函数
便利构造函数通常用在对系统的类进行构造函数的扩充时使用。
便利构造函数的特点:
1、便利构造函数通常都是写在extension里面
2、便利函数init前面需要加载convenience
3、在便利构造函数中需要明确的调用self.init()
convenience init(imageName:String,bgImageName:String){
self.init()
setImage(UIImage(named:imageName), for: .normal)
setBackgroundImage(UIImage(named:bgImageName), for: .normal)
sizeToFit()
}
二、懒加载
//1、模型懒加载
fileprivate lazy var amuseVM : AmuseVM = AmuseVM()
//2、视图懒加载
fileprivate lazy var menuView : MenuView = {
let menuView = MenuView.menuView()
menuView.frame = CGRect(x: 0, y: -kMenuViewH, width: kScreenW, height: kMenuViewH)//设置collectionView的-y,放置menuView
return menuView
}()
三、代理
代理和OC中的模式是一样的,我们只需要按照步骤来就可以了。
//MARK : - 1、设置代理,里面包含传的视图和对应的索引
protocol PageTitleViewDelegate :class{
func pageTitleView(_ titleView : PageTitleView, selectedIndex index : Int)
}
class PageTitleView: UIView {
//2声明一个delegate属性
weak var delegate : PageTitleViewDelegate?
}
//3、在本类中处理代理方法。
delegate?.pageTitleView(self, selectedIndex: currentLabelIndex)
//4、-对外公开的操作FUNC,用于homevc作为pagetitleview的代理,再由homevc调用到这里
extension PageContentView{
func setCurrentIndex(currentIndex : Int){
isForbidScrollDelegate = true
let offsetX = CGFloat( currentIndex) * collectionView.frame.width
collectionView.setContentOffset(CGPoint(x:offsetX,y:0), animated: false)
}
}