ActivityViewController 1.0

ActivityViewController 1.0

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布日期最新版本2015年5月
SPM支持SPM

Brian Thomas维护。



此框架提供了一个可以处理加载、管理和在不同Storyboard或提供的UIViewControllers之间切换的控制器。从控制器中移除切换代理代码,允许你抛弃不活动的控制器是该框架的主要功能。

安装

使用Carthage添加以下内容到您的Cartfile中:

github "bromas/ApplicationVC"

入门指南

在将框架添加到您的项目后,将应用程序的主Storyboard中您的初始视图控制器的类类型设置为ActivityViewController。要显示初始活动/Storyboard,请将initialActivityIdentifier设为用户自定义运行时属性,其值为您要加载的第一个Storyboard的名称。(如果这还不清楚,请查看示例应用程序中的Main.storyboard的Identity Inspector。)

'加载活动'基本上是指查找同名的Storyboard,并加载它的初始视图控制器。

为了测试这种方式,请创建两个新的Storyboard(在Main.storyboard之外),并如上建议将其中一个的名称设置为initialActivityIdentifier。创建并执行一个ActivityOperation以切换到第二个Storyboard。

ActivityOperation(identifier: "Second", animationType: .TransitionCurlUp, duration: 0.4).execute()

使用ActivityViewController

配置活动

如果您继承自ActivityViewController并重写prepareForActivity(identifier: String, controller: UIViewController),您可以处理任何需要的初始化/配置。(只在创建新的控制器时运行,不是在重新显示时。)

配置生成器

如果不希望/需要构建Storyboard,您可以添加闭包,以特定键生成UIViewControllers。

activitiesController.registerGenerator("Generated") { 
  return GeneratedController() 
}

持久化

不活跃的活动按键(activityIdentifier)存储,并按照它们最后呈现的顺序存储。调用切换到已经呈现的活动键将简单地重新显示相同的控制器。然而,如果你想在下次呈现该键时启动该storyboard/UIViewController的新版本,你可以刷新位于Activity Identifier下的视图控制器。

activitiesController.flushInactiveActivitiesForIdentifier(...)

或者使用ActivityOperation上公开的'.New'展示'规则'。

ActivityOperation(rule: .New, identifier: "Authentication", animator: ShrinkAnimator()).execute()

过渡

在活动间的转换封装在ActivityOperation结构中。这些可以通过在操作上调用execute()方法来执行(这需要在是应用程序根控制器的ActivityViewController上执行操作)或者通过在应用程序其他位置嵌入的ActivityViewController上调用performActivityOperation实例方法。

activityViewController.performActivityOperation(operation)

ActivityOperation有三个初始化器用于指定过渡动画。

一个用于无动画过渡

ActivityOperation(identifier: "Authentication").execute()

一个用于UIViewAnimationOptions

ActivityOperation(identifier: "Authentication", animationType: .TransitionCurlUp, duration: 0.5).execute()

还有一个用于UIViewControllerAnimatedTransitionings

ActivityOperation(identifier: "Authentication", animator: ShrinkAnimator()).execute()

示例

包含的示例项目和我在GitHub此处的FrameworksPlayground存储库展示了某些示例用法。