美文网首页
initWithFrame和initWithCoder的区别

initWithFrame和initWithCoder的区别

作者: 小小小Lucky | 来源:发表于2019-08-10 23:26 被阅读0次

    initWithFrame和initWithCoder的区别

     

    superLee 关注

    2015.12.02 22:12* 字数 306 阅读 1380评论 0喜欢 4

    一. initWithFrame:

    initWithFrame方法是用来根据制定的CGRect初始化并返回一个新的视图对象的,其他UI对象,也有initWithFrame方法,这里我们以UIView为例,讲一下这个方法何时使用。

    1.Interface Builder方式自定义view

    这种方式就是使用nib文件,就是我们所常用的“拖控件”的方式。如果我们使用了该方法创建了UIView,那么initWithFrame方法是不会被调用的,因为nib文件已经定义好了view的长、宽、背景以及其他的一些属性。

    那么我们要想重写nib中的各项属性,就要在initWithCoder这个方法里面进行了。

    2.纯代码的方式自定义view

    用纯代码的方式去自定义一个view,就是我们新建一个继承自UIView的类,当我们加在该view的时候就会调用initWithFrame来初始化该UIView。尤其需要注意的是,如果是在子类中重写initWithFrame方法,必须先调用父类的initWithFrame方法,再对自定义的UIView的子类进行初始化操作。

    例如:

    - (instancetype)initWithFrame:(CGRect)frame{

    //调用父类的initWithFrame

    self= [superinitWithFrame:frame];

    if(self) {

    /*在这里初始化UIView

            ...

            ...

            */}returnself;}

    相关文章

      网友评论

          本文标题:initWithFrame和initWithCoder的区别

          本文链接:https://www.haomeiwen.com/subject/jmndjctx.html