sunhongyue4500
6/9/2017 - 11:17 AM

iOS load Nib file 5 ways

iOS load Nib file 5 ways

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    NSInteger offsetY = 1;
    #pragma mark - **************** 第一种种方式
    /** owner 为nil*/
    NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"View1" owner:nil options:nil];
    UIView *redView = array[0];
    CGRect frame = redView.frame;
    CGRect newframe = CGRectMake(frame.origin.x + 100, frame.origin.y * offsetY + 100, frame.size.width, frame.size.height);
    //redView.backgroundColor = [UIColor redColor];
    redView.frame = newframe;
    [self.view addSubview:redView];
    
    #pragma mark - **************** 第二种方式
    offsetY++;
    /** owner 为self*/
    [[NSBundle mainBundle] loadNibNamed:@"View2" owner:self options:nil];
    newframe = CGRectMake(frame.origin.x + 100, frame.origin.y + offsetY * 100, frame.size.width, frame.size.height);
    _View2.frame = newframe;
    [self.view addSubview:_View2];
    
    #pragma mark - **************** 第三种方式
    /** owner 为其他对象*/
    offsetY++;
    OwnerFileTest1 *owTest1 = [[OwnerFileTest1 alloc] init];
    [[NSBundle mainBundle] loadNibNamed:@"View3" owner:owTest1 options:nil];
    newframe = CGRectMake(frame.origin.x + 100, frame.origin.y + offsetY * 100, frame.size.width, frame.size.height);
    owTest1.view3.frame = newframe;
    [self.view addSubview:owTest1.view3];
    
    #pragma mark - **************** 第四种方式
    /** 指定Class Name 不指定File Owner*/
    offsetY++;
    _view4 = [[NSBundle mainBundle] loadNibNamed:@"View4" owner:nil options:nil][0];
    newframe = CGRectMake(frame.origin.x + 100, frame.origin.y + offsetY * 100, frame.size.width, frame.size.height);
    _view4.frame = newframe;
    [self.view addSubview:_view4];
    
    #pragma mark - **************** 第五种方式
    /** 通过UIViewController的initWithNibName:bundle:方法加载xib文件中的视图*/
    offsetY++;
    MyViewControllerTest1 *vc1 = (MyViewControllerTest1 *)[[UIViewController alloc] initWithNibName:@"View5" bundle:[NSBundle mainBundle]];
    newframe = CGRectMake(frame.origin.x + 100, frame.origin.y + offsetY * 100, frame.size.width, frame.size.height);
    vc1.view.frame = newframe;
    [self.view addSubview:vc1.view];
    
}