DeckTransition 2.2.0

DeckTransition 2.2.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间最后发布2019年9月
SPM支持 SPM

Harshil Shah 维护。



DeckTransition

CI Status Version Package Managers Documentation License Contact

DeckTransition 是尝试重新创建 iOS 10 中 Apple Music 和 iMessage 应用中发现的类似卡片式过渡效果。

以下是一个展示其效果的动作图。

Demo

要求

  • Swift 5.0
  • iOS 9 或更晚版本

安装

CocoaPods

要使用 CocoaPods 安装 DeckTransition,请在您的 Podfile 中添加以下行:

pod 'DeckTransition', '~> 2.0'

Carthage

要使用Carthage安装DeckTransition,请将以下行添加到您的Cartfile中

github "HarshilShah/DeckTransition" ~> 2.0

文档

您可以在此处找到文档。文档是由Jazzy生成的,托管在GitHub Pages上。

用法

基础

在您的模态视图控制器中设置modalPresentationCapturesStatusBarAppearancetrue,并覆盖preferredStatusBarStyle变量以返回.lightContent

此外,应跟踪滑动关闭手势的UIScrollView实例应当将它们的backgroundColor设置为.clear

显示

可以从代码或使用Storyboard调用此过渡效果。

要通过Storyboard使用,请设置自定义 segue(将其kind设置为custom),并将class设置为DeckSegue

以下是一个通过代码使用的示例片段。只需用您的视图控制器类替换ModalViewController()即可。

let modal = ModalViewController()
let transitionDelegate = DeckTransitioningDelegate()
modal.transitioningDelegate = transitionDelegate
modal.modalPresentationStyle = .custom
present(modal, animated: true, completion: nil)

关闭

默认情况下,DeckTransition 具有滑动返回的手势,当你的模态窗口的主 UIScrollView 滚动到顶部时,此功能会被自动启用。

你可以通过在初始化 DeckTransitioningDelegate 时传递 false 以选择退出此行为。

UIScrollView 检测

DeckTransition 内部有一个启发式算法来决定应该跟踪哪个 UIScrollView 以支持滑动返回手势。通常情况下,这足以覆盖大多数使用场景。

然而,还有一些边缘情况,如果在某些情况下遇到这个问题,可以通过使你的模态视图控制器遵守 DeckTransitionViewControllerProtocol 协议来解决。有关此内容的更多信息可以在关于UIScrollView 检测的文档页面找到。

快照

由于各种原因,包括 iOS 11 的安全区域布局,DeckTransition 使用展示视图控制器的视图的快照而不是直接使用视图。此视图会在每次帧大小调整时自动更新。

然而,有些情况下你可能需要亲自更新快照视图,可以使用以下一行代码实现

(presentationController as? DeckSnapshotUpdater)?.requestPresentedViewSnapshotUpdate()

这只是请求展示控制器更新快照。

你也可以选择从展示视图控制器直接更新快照,如下所示

(presentedViewController?.presentationController as? DeckSnapshotUpdater)?.requestPresentedViewSnapshotUpdate()

需要注意的是,更新快照是一个耗时的过程,仅在必要时使用,例如如果您正在更新整个应用程序的主题。

使用 DeckTransition 的应用程序

如果你在使用此库,请随意提交一个 PR

作者

作者:Harshil Shah

许可

DeckTransition遵循MIT许可。有关更多信息,请参阅LICENSE文件。