IOS中 xib自定义View在storyboard中的使用

IOS开发 专栏收录该内容
7 篇文章 0 订阅

最近遇到一个这样的问题,在应用当中有多个ViewController中包含相同布局的SubView。于是就想把这样的View 提取出来做一个自定义的View,这样就可以避免在storyboard中反复绘制相同的东西,代码上也可以降低重复。


摸索了之后总结出下面的步骤:


1,创建UIView SubClass 命名为MyView


2, new一个名为MyViewxib

p1p1

3,配置xib的属性

p2p2

4,为View 添加背景色,添加一个按钮并定制按钮约束,这里我添加的约束为垂直居中,ButtonView等宽,Button左边起点位置为0

p3p3

5,设置xib中的File’s owner = MyView, 拖拽view 到关联的代码中命名为contentView

p4p4

6, storyboard 中对ViewController 添加一个View,之后把View class 设为MyView


7,MyView.m中添加代码


- (void)awakeFromNib

{

    NSLog(@"awake from nib");

    [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];

    [self addSubview:self.contentView];

}

这样执行后就可以看到该View了,但是会有一个严重的问题,那就是MyView 在显示时没有做到AutoLayout。仅仅是按照xib中的尺寸来显示,而在实际应用中可能我们会期待在ViewController中使用的自定义View内部亦可以自动匹配大小。

对于上面的问题,我的解决方法是重写setFrame方法,如下:

8MyView.m中添加代码


- (void)setFrame:(CGRect)frame

{

    [super setFrame:frame];

    CGRect rect = frame;

    rect.origin.x = 0;

    rect.origin.y = 0;

 

    self.contentView.frame = rect;

}

StoryBoard中拖拽MyView IBOutLet ViewController

p5p5

ViewDidLoad 中增加代码   

 [self.myView setFrame:self.myView.frame];


这样就可以让storyBoard 中设置的约束正确的影响到MyView

p6p6



至此,问题已经基本上得到解决。后续问题就不在本文中进行描述了。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值