IOS 设置子控件的frame(layoutSubviews and awakeFromNib)

  如果控件是通过xib或者storyboard创建出来的就会调用该方法

- (void)awakeFromNib :该方法只会调用一次
// 如果控件是通过xib或者storyboard创建出来的就会调用该方法
// 该方法只会调用一次
- (void)awakeFromNib
{
    // Initialization code
    NSLog(@"awakeFromNib");
    
//    self.backgroundColor = [UIColor redColor];
    
    // 创建分割线添加到cell中
    UIView *view = [[UIView alloc] init];
    view.backgroundColor = [UIColor blackColor];
    view.alpha = 0.5;
    self.divider = view;
    
    // 注意不要直接将子控件添加到cell中
//    [self addSubview:view];
    
    [self.contentView addSubview:view];
}

-(void)layoutSubviews:
当一个控件的frame发生改变的时候就会调用 一般在这里布局内部的子控件(设置子控件的frame) 
/**
 *  当一个控件的frame发生改变的时候就会调用
 *
 *  一般在这里布局内部的子控件(设置子控件的frame)
 */
-(void)layoutSubviews
{
#warning 一定要调用super方法
    
    [super layoutSubviews];

      //1.设置按钮的frame

      self.nameView.frame=self.bounds;

//2.设置好友数的frame
    CGFloat counY=0;
    CGFloat counH=self.frame.size.height;
    CGFloat counW=150;
    CGFloat counX=self.frame.size.width-10-counW;

    self.contentView.frame=CGRectMake(counX, counY, counW, counH);
}
原文地址:https://www.cnblogs.com/liuwj/p/6494529.html