initWithFrame;initWithCoder;awakeFromNib

这三个方法都与自定义控件有关,具体牵扯到什么时候调用,下面总结一下调用的注意事项。
initwithFrame
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
      //代码
    }
    return self;
}
  • 这个方法是在代码创建控件的时候使用,重写这个方法在这个方法里添加控件,不对控件进行尺寸的设置。因为此时的frame无法确定。
  • 在控制器的viewdidload中创建一个控件,如果这个控件是基本控件,并且调用了这个方法,可以发现无法用这个方法设置Frame。因为控件尺寸设置最终都会来到setframe这个方法。
  • 非代码创建的控件不会来到这个方法。
initWithCoder
 - (id)initWithCoder:(NSCoder *)decoder
{
    if (self = [super initWithCoder:decoder]) {
        //代码
    }
    return self;
}
  • 这个方法是当用storyboard,xib创建的控件的时候回来到这个方法。
  • 这个时候的控件是死的。就是说还是nil。
  • 建议在awakeFromNib进行初始化操作。
awakeFromNib
  • awakeFromNib是在初始化完成后调用(xib中控件创建以后)
  • 可以在这个里面进行初始化操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值