美文网首页iOS开发iOS Dev
使用XIB 自定义UIView,并可AutoLayout

使用XIB 自定义UIView,并可AutoLayout

作者: 好好姐 | 来源:发表于2014-11-26 16:31 被阅读6797次

    我们知道如何使用XIB自定义一个UIView, 但当将其添加到AutoLayout的VC上时, 如何使这个自定义的UIView也可以跟随父VC 使用Autolayout呢? 下面细细道来..

    1,新建一个文件 “File -> New -> New File” (cmd + N), 选择 “Cocoa Touch” 然后是 “Objective-C class”,“UIView”的子类, 输入文件名:TestCustomView
    2,新建一个 “User Interface” 然后是 “View”.命名为: TestCustomView
    3,设置xib 的file's owner 为你自定义的类

    set.jpg

    4,然后打开TestCustomView.h添加一个IBOutlet
    <pre><code>
    @property (nonatomic, weak) IBOutlet UIView *view;
    </code></pre>

    5,将此IBOutlet 连接到TestCustomView.xib 的View

    oulet.jpg

    6,最后打开TestCustomView.m,添加如下代码:
    <pre><code>

    • (instancetype)initWithCoder:(NSCoder *)aDecoder
      {
      self = [super initWithCoder:aDecoder];
      if (self) {
      NSString *className = NSStringFromClass([self class]);
      self.view = [[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil] firstObject];
      [self addSubview:self.view];
      return self;
      }
      return nil;
      }
      </code></pre>

    在VC中使用它:

    use.jpg

    附个demo:
    https://github.com/wangjianlewo/TestCustomViewFromXib
    demo 中 右边的按钮总是距离屏幕的最右方10

    现在当VC使用了AutoLayout 之后,使用xib自定的view,也可以使用AutoLayout完美适配了.

    相关文章

      网友评论

      • 烟佛经:把自定义视图放在cell的contentView中就是不显示,why??
      • guoguo_lay:不对哦, 父view 对TestCustomView 的约束无效。
      • 3635c72eabbb:楼主的工程还是有问题,也是我一直想寻求解决的问题。xib的宽度如果更宽,并设置好约束。在ViewController上添加时,如果约束的宽度与xib中不一样,貌似用的就是xib的宽度,外面的约束不生效。楼主,请验证
        3635c72eabbb:@4d1830d375f1 现在用的是Snapkit,手写约束搞定
        萧城x:我也是这样的问题
        4d1830d375f1:@阿童木518最后你是怎么解决的啊 我也遇到了这个问题
      • c169edc70607:请问为什么要在initwithCoder里面写呢?
      • CoderGLM:为啥,我改变storyboard中自定义view的大小,运行时view大小并没有变啊

      本文标题:使用XIB 自定义UIView,并可AutoLayout

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