LoadableViews 3.6.1

LoadableViews 3.6.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2021年5月
SPM支持 SPM

Denys Telezhkin 维护。




CI codecov.io Platform CocoaPods Compatible Swift Package Manager compatible Packagist

LoadableViews

将视图类加载到其他 XIB 或 storyboard 的最简单方法。

WTFCat

基本设置

  • 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
  • 如有必要,重写nibNamenibContainerView属性。
  • 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),因此无法将UITableViewCellLoadableTableViewCell制作成IBDesignable
  • 例如UIScrollView的子类如UITextView与可加载视图插入时的表现不佳,因此当前版本中不包括UITextView的可加载子类,但可能在将来实现。

需求

  • iOS 8+
  • tvOS 9.0+
  • Swift 4.0 / 3.2

安装

CocoaPods

  pod 'LoadableViews'

许可协议

LoadableViews遵从MIT许可协议。请查看LICENSE文件以获取详细信息。

关于MLSDev

MLSDev.com

LoadableViews由MLSDev, Inc.维护。我们专注于提供移动和网页开发的全套解决方案。我们的团队遵循精益原则,并按照敏捷方法论工作,以最佳结果降低开发预算和时间线。

更多详情请访问这里,并随时联系我们