美文网首页
IOS xib 或 Storyboard xib view 创建

IOS xib 或 Storyboard xib view 创建

作者: Superman168 | 来源:发表于2018-11-21 14:08 被阅读0次

    前言

    在项目中用 xib或 Storyboard 布局 完成后,因为 动态适配等各种原因经常会遇到,修改布局的限制等,索性就记录一下,供大家参考。

    xib view 创建

    1. 创建一个继承自UIView的类,命名为XXXView.

    2.创建xib文件,名字为XXXView,和 创建的XXXView 保持一致.(其实也可以不一致,只要 xib 关联的 class 一致就可以了,为了整体一致而已)。

    加载就可以使用下面这个万能的加载方法。
        QCBaseView *baseView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] firstObject];
    
    image.png

    修改frame

    第一种

    当在controller的viewdidload中使用的时候,因为xib开启了auto layout,设置frame不生效,这是因为viewdidload加载在autolayout之前,导致设置的frame被覆盖了,这时候设置frame可以放在- (void)viewDidLayoutSubviews这个方法中。

    这种情况比较常见,容易忽略的一点,加载顺序先后的问题 ,了解了可以解决一些疑难问题(昨天就遇到了,纠结了挺久的)。

    第二种:

    直接去掉auto layout,相当于固定死的布局。

    第三种

    可以通过设置xib的size为freeform或none。

    简单粗暴的方式

    直接选中 xib或 Storyboard 中要修改的约束像拖控件一样,拖入 .h 或 .m 中,然后修改相应的值即可。

    如:

    image.png

    修改:

    image.png

    在 ScrollView 中添加多个 自定义的 xib View

    在 xib 中 的ScrollView 或代码创建的 ScrollView 中添加多个 自定义的 xib View,可能出现 View 视图错位或不显示的问题,因为在 ScrollView 的内容区域大小是内部视图撑起来的,而 用 Xib 创建的 View 被添加到 ScrollView 中时,如果不设置 frame 的话,默认是以 Xib 中的 View 大小来渲染的。

    前两天遇到的一个问题,就是用 Xib 创建的 View 被添加到 ScrollView 中,一直错位,无论在代码中怎么设置,结果还是无济于事,细细的查看一番,找到了最终的原因,没有在 Xib 中创建 底图的View, 类似下面这个,拖入一个父视图即可,解决错位的问题,约束的问题。

    image.png

    在 ScrollView 中用代码添加多个自定义的 xib View , 每次都必须计算要添加的 View 的位置大小,尤其是在需要不停的添加子视图到 ScrollView 中更需要计算好每次添加的 View 的位置大小等,并适配。

    小结

    xibView 的创建其实也很简单,本质就是将一个 Xib 和创建的一个 继承于UIView 的子类关联。
    *注意:在使用时如果需要修改 xib frame 参考上面的几种方式,尤其关注加载顺序的先后问题。

    相关文章

      网友评论

          本文标题:IOS xib 或 Storyboard xib view 创建

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