美文网首页iOS进阶+实战ios开发笔记iOS UI 基础
UIView 的几个常用方法用使用场景

UIView 的几个常用方法用使用场景

作者: TobyoTenma | 来源:发表于2016-05-31 09:33 被阅读569次

    初始化方法

    1.这个方法就是大家熟悉的构造方法,在初始化 控件 的时候调用,我们可以在这个方法内为这个 控件 添加一些控件,这样,当我们创建完成这个 控件的时候,这个 控件 中就有了我们想要的控件;

    - (instancetype)init {
        if (self = [super init]) {
            // 添加子控件
        }
        return self;
    }
    

    2.这个方法也是一个构造方法,与上面的-init 方法的区别仅在于在这个构造方法中,我们要传入一个 frame,以便我们在初始化 控件 的时候可以给 控件 指定我们传入的 frame;同样在这个方法中我们也可以为 控件 添加我们想要的控件;

    - (instancetype)initWithFrame:(CGRect)frame {
        if (self = [super initWithFrame:frame]) {
            // 添加子控件
        }
        return self;
    }
    

    3.同样这个方法也是一个构造方法,但不在于,这个方法是在特殊(当对象是从文件(不仅仅只是 xib和storyboard)中创建)的时候调用.同样在这个方法中我们也可以为 控件 添加我们想要的控件;
      但是这里有一点是要注意:

    在这个方法调用的时候,xib 或者 storboard 与文件的连线还没有生成;所以在这里调用方法是无效的,请注意这点.

    // 当对象从文件(不单单只xib和sb)中创建的时候调用
    - (instancetype)initWithCoder:(NSCoder *)aDecoder {
        if (self = [super initWithCoder:aDecoder]) {
            // 添加子控件
            
            // 在该方法调用的时候,xib/sb中关联的控件还没有连好线.
        }
        return self;
    }
    

    其它方法

     #pragma mark - 当控制器从xib/sb中创建时调用
    - (void)awakeFromNib {
        // 添加子控件
        // 获得xib/sb中子控件,给子控件属性设置
    }
    
      这个方法,当添加子`控件`时或当前控件frame发生改变时(改变前和改变后的frame要不一致);
     #pragma mark -一般在这个方法里面对构造方法中添加的`控件`的 frame 进行设置
    - (void)layoutSubviews {
        [super layoutSubviews];
        // 布局子控件的frame
    }
    
     #pragma mark - 当类被加载时调用
    + (void)load {
        
    }
    
     #pragma mark - 当类第一次使用时调用
    + (void)initialize {
    
    }
    

    相关文章

      网友评论

        本文标题:UIView 的几个常用方法用使用场景

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