美文网首页征服iOS
initWithFrame和initWithCoder的区别

initWithFrame和initWithCoder的区别

作者: superLee | 来源:发表于2015-12-02 22:12 被阅读1308次

    一. 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 = [super initWithFrame:frame];
        if (self) {
            /*在这里初始化UIView
            ...
            ...
            */
     }
        return self;
    }
    

    相关文章

      网友评论

        本文标题:initWithFrame和initWithCoder的区别

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