Family 2.2.2

Family 2.2.2

Christoffer Winterkvist维护。



Family 2.2.2

Family logo

CI Status Version Carthage Compatible codecov License Platform Swift

描述

Family Icon

Family是一个子视图控制器框架,它使得设置父控制器变得轻松如甜品。它拥有简单且功能强大的公共API,您可以在不失去可维护性的情况下构建复杂的布局,从而让您专注于重要的事情:使您的应用程序更加吸引人,使您的业务逻辑更加耀眼。

这个框架是为了更容易构建和维护父控制器(也称为流程控制器)而构建的。使用子视图控制器可以使您的代码更加模块化、灵活和可测试。它解决了vanilla方法的一个最大的缺点:在保持缓存清空的情况下,如何得到一个连续滚动的体验?

这就是Family框架发挥作用的地方。借助其布局算法,所有常规和滚动视图都按照您添加到体系结构的线性垂直顺序堆叠。为了实现连续滚动的视图,子滚动视图不再自己滚动,而是由父滚动视图传递给它新的内容偏移量,框架为您处理这一点。该框架还会动态修改视图的框架,将高度约束到窗口上。

Family背后的故事

如果您对Family背后的起源感兴趣,可以阅读这篇Medium文章

特性

  • 🍩动画支持。
  • 🤳🏻支持多个滚动视图的连续滚动。
  • 📏子视图控制器之间的边距。
  • 🌀表格视图和集合视图出队。
  • 🍭支持视图之间的自定义间距。
  • 📱iOS 支持。
  • 💻macOS 支持。
  • 📺tvOS 支持。

支持项目

如果您想支持此框架的开发,您可以成为 赞助商❤️

使用

新的公共 API

body(withDuration: 0) {
  add(detailViewController)
  .background(.view(backgroundView))
  .padding(.init(top: 20, left: 20, bottom: 20, right: 20))
  .margin(.init(top: 20, left: 0, bottom: 20, right: 0))
}

添加一个普通子视图控制器

let familyController = FamilyViewController()
let viewController = UIViewController()

familyController.addChild(viewController)

添加被高度约束的子视图控制器

let familyController = FamilyViewController()
let viewController = UIViewController()

familyController.addChild(viewController, height: 175)

添加一个在控制器上有自定义视图的子视图控制器

let familyController = FamilyViewController()
let customController = CustomViewController()

// This will add the scroll view of the custom controller
// instead of the controllers view.
familyController.addChild(customController, view: { $0.scrollView })

移动视图控制器

familyController.moveChild(customController, to: 1)

执行批量更新(当更新多个视图控制器时推荐使用 performBatchUpdates)

familyController.performBatchUpdates({ controller in
  controller.addChild(controller1)
  controller.addChild(controller2)
  controller.moveChild(controller2, to: 0)
  controller3.removeFromParent()
})

添加动画

在添加动画时,请注意您必须为其提供一个密钥。

let basicAnimation = CABasicAnimation()
basicAnimation.duration = 0.5
controller.view.layer.add(springAnimation, forKey: "Basic Animations")

let springAnimation = CASpringAnimation()
springAnimation.damping = 0.6
springAnimation.initialVelocity = 0.6
springAnimation.mass = 0.4
springAnimation.duration = 0.6
springAnimation.isRemovedOnCompletion = false
controller.view.layer.add(springAnimation, forKey: "Spring Animations")

安装

Family 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中

pod 'Family'

然后运行

pod install

Family 也可通过 Carthage 获取。要安装,只需将其写入您的 Cartfile 中

github "zenangst/Family"

然后运行

carthage install

完成后,将构建的框架(可在 Carthage/Build 文件夹中找到)安装到您的 Xcode 项目中。

Family 还可手动安装。只需下载并将 Sources 文件夹拖放到您的项目中。

作者

Christoffer Winterkvist, [email protected]

贡献

我们非常希望您为 Family 做出贡献,请查看 CONTRIBUTING 文件了解详细信息。

致谢

许可协议

Family 采用 MIT 许可协议。更多详细信息请参阅 LICENSE 文件。