swift 自定义控件三部曲

在程序语言不断跟新的时代,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

    }()





你可能感兴趣的:(Swift)