美文网首页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