LoadableViews
将视图类加载到其他 XIB 或 storyboard 的最简单方法。
基本设置
- 从
LoadableView
继承您的视图 - 创建一个 xib 文件,将文件所有者类设置为您的类
- 像往常一样链接输出
用法
- 将 UIView 拖到您的 XIB 或 storyboard 中
- 将其类设置为您的类名
您的视图将自动加载到不同的 xib 中!
IBInspectable && IBDesignable
IBInspectables能够在您的视图是IBDesignable时自动渲染。通常,Interface Builder无法自动识别您的视图是否是IBDesignable,因此您需要将此属性添加到视图子类中
@IBDesignable class WTFCatView: LoadableView
支持的UI类
- UIView -
LoadableView
- UITableViewCell -
LoadableTableViewCell
- UICollectionViewCell -
LoadableCollectionViewCell
- UICollectionReusableView -
LoadableCollectionReusableView
- UITextField -
LoadableTextField
要使用从xibs加载,例如用于UICollectionViewCells,在InterfaceBuilder中而不是使用UICollectionViewCell,而是降落UIView,并遵循基本设置。然后,在您的storyboard上,设置单元格的类,它将自动更新。
自定义
更改xib名称
class CustomView : LoadableView {
override var nibName : String {
return "MyCustomXibName"
}
}
更改视图容器
class CustomViewWithLoadableContainerView : LoadableView {
override var nibContainerView : UIView {
return containerView
}
}
使自定义视图可加载
- 在您的自定义
UIView
子类上采用NibLoadableProtocol
。 - 如有必要,重写
nibName
和nibContainerView
属性。 - 在
init(frame:)
和init(coder:)
方法中调用setupNib
方法。
已知问题
- 由于bundle路径,当
IBDesignable
属性在框架中时,不会识别,因此需要在当前版本中手动将IBDesignable
属性添加到视图中。 - 由于InterfaceBuilder使用
initWithFrame(_:)
方法来绘制视图:[Open Radar](http://www.openradar.me/19901337)、[Stack Overflow](http://stackoverflow.com/questions/26197582/is-there-a-way-for-interface-builder-to-render-ibdesignable-views-which-dont-ov),因此无法将UITableViewCell
和LoadableTableViewCell
制作成IBDesignable
。 - 例如
UIScrollView
的子类如UITextView
与可加载视图插入时的表现不佳,因此当前版本中不包括UITextView
的可加载子类,但可能在将来实现。
需求
- iOS 8+
- tvOS 9.0+
- Swift 4.0 / 3.2
安装
CocoaPods
pod 'LoadableViews'
许可协议
LoadableViews
遵从MIT许可协议。请查看LICENSE文件以获取详细信息。
关于MLSDev
LoadableViews
由MLSDev, Inc.维护。我们专注于提供移动和网页开发的全套解决方案。我们的团队遵循精益原则,并按照敏捷方法论工作,以最佳结果降低开发预算和时间线。