概览
iOS开发者经常会遇到从NIB初始化视图(或视图控制器)的问题。在iOS SDK中,这种情况需要开发者编写大量代码
- 检查存放NIB文件的bundle是否存在
😢 - 检查bundle内是否存在NIB文件
😔 - 从NIB加载内容
😡 - 从各种元素数组中找到合适的视图
😡 😡 😡
Visuality
为上述问题提供了强大的解决方案。您只需一行代码即可从位于任何bundle中的NIB初始化视图(当然包括视图控制器)!听起来很简单,不是吗?
这还不是Visuality
所有功能的全部。还有更多功能!
如何入门
- 将
Source
文件夹的内容复制到您的项目中。
或者
- 使用
Visuality
cocoaapod
要求
- iOS 9及以后版本
- Xcode 9及以后版本
- Swift 4
用法
视图
要创建新的 UIView
实例,必须使用 .from()
静态方法
MyView.from(nib: <nib query>, inBundle: <bundle query>)
NIB 查询可以是以下值之一
byNibName("MyView")
- 加载具有自定义名称的 NIBbyClassName
- 加载具有视图类名称的 NIBbyClassNameWithSuffix(<suffix>)
- 加载具有视图类名称和后缀的 NIBnone
- 不加载 NIB 加载视图
NIB 名称可用后缀列表
_iPhone
_iPad
custom("suffix")
Bundle 查询定义包含所需 NIB 的程序包。可能的值为
main
- 主要程序包byInstance(bundle)
- 需要类型为Bundle
的实例byIdentifier("com.example.App")
- 需要程序包标识符
因此,如果您需要初始化与同一名称的 NIB 文件位于主程序包中的 MyView
类型的视图,您可以简单地写下
let view = MyView.from(nib: .byClassName, inBundle: .main)
视图控制器
视图控制器实例的初始化与视图的初始化非常相似,但还有一个额外的参数
let viewController = MyViewController.from(nib: .byClassName, inBundle: .main, loadView: true)
最后一个参数 loadView
是一个布尔值,指定视图是否应在创建视图控制器后立即加载。在大多数情况下,您不需要立即加载视图,但有时这确实是个很有用的选项。
默认情况下,loadView
为 false
,因此,如果不需要立即加载视图控制器视图,则可以省略此参数
let viewController = MyViewController.from(nib: .byClassName, inBundle: .main)
在这种情况下,视图将在屏幕显示之前加载数据。
许可协议
Visuality
在 MIT 许可协议下可用。有关更多信息,请参阅 LICENSE
文件。