美文网首页iOS
XIB相关方法

XIB相关方法

作者: 清都 | 来源:发表于2017-11-24 15:07 被阅读2次

    创建的XIB类型为VC时,加载的注意点

    代码布局有其便利之处,但是有时候部分布局需要重复使用,且结构比较复杂时,也可以使用XIb进行部分布局,此时封装一个viewcontroller类型的XIB可以节省后续很多维护的麻烦。但是使用XIB也会有一些地方需要注意,一不小心便要多花很多的时间来查找问题。此处列出部分遇到的问题,用于总结及日后查阅。

    • 当创建的XIB的class为viewcontroller时,不只是需要在创建的ViewController上alloc\init,还要将XIB所在的Viewcontroller设为该控制器的子控制器:
    
    [self addChildViewController:test]; //添加为当前控制器子控制器
    

    控件设置圆角或圆形

    在XIB的User Defined Runtime Attributes属性中添加以下两个Key Path

    
    //当cornerRadius的值为正方形控件二分之一时,
    layer.cornerRadius-number-数值
    layer.masksToBounds-bool-YES
    

    为UIView的类创建XIB

    我们可以为控制器创建配套的XIB,可是UIView上却不行,但是我们也可以通过一些特定的手段实现这一功能

    选择XIB的View上的Custom ClassClass选项,将其改成和类名一样,在对应的类中实现以下方法:

    
    +(CustomView *)AcquireCustomView
    {
        //我们这里需要把这个xib加载出来而这个xib的所拥有者就是当前的对象`instantiateWithOwner:`这个方法就是对此xib文件进行拥有者关联,关联这个xib是属于哪一个类的我们当然这是self
        CustomView *View = [[UINib nibWithNibName:@"CustomView" bundle:nil]instantiateWithOwner:self options:nil].lastObject;
        
        return View;
    }
    
    
    • 此处使用类似+(CustomView *)allocWithCustomView的写法或是-(id)initWithXIB\[super init]两种做法都可以,实现UINib的方法及最后return类的实例即可。

    在需要调用该类的地方实现以下方法:

    
    
        CustomView * theCustomView = [[CustomView AcquireCustomView]init];
        [self.view addSubview:theCustomView];
        //约束
        theCustomView.frame = CGRectMake(50, 100, 200, 200);
        
    
    • XIB上的控件可直接连线到类并实现

    参考链接: iOS 给UIView添加单独XIB文件

    相关文章

      网友评论

      • 清都:增加顶部约束的处理办法

      本文标题:XIB相关方法

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