swift常用知识点总结

2018-05-17  本文已影响17人  woniu

一、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)
    }
}

斗鱼项目链接:https://github.com/caiqingchong/DouYu
swift的多种动画

上一篇 下一篇

猜你喜欢

热点阅读