美文网首页iOSUI
Swift 在Xib中嵌套使用Xib文件

Swift 在Xib中嵌套使用Xib文件

作者: Jason_h | 来源:发表于2018-10-21 18:58 被阅读0次

一、前言

由于公司的iMac之前一直使用的是机械硬盘,所以在使用Xib的时候会导致电脑卡的飞起,所以一直以来都是纯代码构建页面。在经过不断的吐槽之后公司终于换上了固态硬盘,在iMac整体速度大幅提升的情况下,又重新开始使用Xib画UI。

二、Xib的嵌套

在开发中如果页面比较复杂一般会拆分成多个子视图,而如果一个使用Xib的页面存在大量的控件,那么就可以考虑将它拆分成多个子Xib然后嵌套使用。下面介绍一下Xib的嵌套使用:

1.首先创建子控件的Xib文件

自定义Xib

2.指定File‘s OwnerCustom Class为自定义View的类名

指定File's Owner的Custom Class

3.重写CustomView的 init?(coder aDecoder:NSCoder) 方法,在里面加载Xib

重写 init?(coder aDecoder: NSCoder) 

4.在父视图上拖出一个View并将这个View的类名设置成自定义View的类名

在父视图上设置自定义View

注意: 第二步和第四步都是设置Custom Class,不过一个是设置子视图的File’s Owner,一个是设置父视图中UIView。

然后编译运行后就能看到自定义的View已经显示到了界面上。

运行的效果

三、遇到的问题

在使用Xib嵌套Xib的时候出现了下面这种尴尬的情况。两个自定义的UIView和一个UIButton,但是在页面上只能看到Button的显示效果,自定义的UIView是一片空白。只有运行之后才能看到页面,那么怎样才能在不运行的情况下也让Xib上的控件也能显示出来呢?

Xib嵌套使

四、IBDesignable

实际上为了解决这个问题,Xcode提供了一个叫做 IBDesignable的东西。

IBDesignable功能就是让XCode动态渲染出该类图形化界面。

在自定义的View添加 IBDesignable,

添加IBDesignable

这时Xib上会出现一个 Designables 显示当前的编译状态。

IBDesignable 最后的效果

五、IBDesignable Build Failed

如果在使用IBDesignable的过程中出现Buil Failed,下面提供一种解决方法。

Build Failed

1. 在自定义的View中重写 init(frame:CGRect) 方法 并且加载 Xib。

init(frame:CGRect)

2.打开Xcode -> Preferences -> Locations  点击小箭头进入 Derived Data文件夹,删除里面的内容。

Derived Data

3. Clean 整个工程 

4. 重启Xcode。

参考文章

Nested Xib Views - 使用XIB实现嵌套自定义视图 - GeekerProbe

ios - Xcode 8 - IB Designables - Failed to render and update auto layout status, The agent crashed - Stack Overflow

相关文章

  • Swift 在Xib中嵌套使用Xib文件

    一、前言 由于公司的iMac之前一直使用的是机械硬盘,所以在使用Xib的时候会导致电脑卡的飞起,所以一直以来都是纯...

  • Swift与Objective-C混编,Objective-C的

    比如在Objective-C中的Xib文件中,使用了从Swift的Xib中拷贝过来的UIImageView控件,那...

  • xib中嵌套使用xib

    在xib中嵌套使用xib,如果使用不正确会导致子xib最后加载不出来(具体原因可以查看第一篇参考文章)。可行的方法...

  • xib中嵌套使用xib

    在xib中嵌套使用xib,如果使用不正确会导致子xib最后加载不出来(具体原因可以查看第一篇参考文章)。可行的方法...

  • swift storyboard中使用xib定义的view

    一. 需要在xib或者storyboard中嵌套使用 1. 例如定义AView,新建AView.swift、AVi...

  • xib嵌套xib

    xib定制类嵌套在另一个xib中的方法 我不是一个经常使用xib的人,总感觉xib所见即得,非常简单,昨天同事在写...

  • swift 创建xib项目

    swift 使用xib布局创建带有xib的ViewController 1. 在AppDelegate 引用创建的...

  • 【知识总结】xib 自定义视图总结

    xib文件的使用分为两种:1,使用代码载入2,在其他xib文件中通过绑定class使用自定义的xib文件 而这两种...

  • xib 原理、嵌套、可视化、继承

    xib嵌套 封装了一个view,它自带有xib。想让它能在其他xib、SB中使用 1.绑定xib的File Own...

  • xib加载view尺寸问题

    在使用自定义的xib加载view的时候给xib设置了宽度等于屏宽,依然无效. 解决方案在xib对应的.m文件中,添...

网友评论

    本文标题:Swift 在Xib中嵌套使用Xib文件

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