SheetPresentation

一个用于 iOS 的 UIPresentationController 及相关类,用于呈现一个视图控制器,该视图控制器像操作表一样固定在屏幕边缘。

Version Documentation Carthage compatible Swift Package Manager License Platform

安装

Swift Package Manager

要将 SheetPresentation 与 Swift Package Manager 一起使用,请在 Xcode 中将其作为依赖项添加到您的项目中,或者将其作为依赖项添加到您的 Package.swift 文件中。

CocoaPods

要将 SheetPresentation 与 CocoaPods 一起使用,请将依赖项添加到您的 Podfile

target 'MyAwesomeApp' do
  pod 'SheetPresentation'
end

然后运行 pod install 并使用生成的 .xcworkspace 打开您的项目。

Carthage

要将 SheetPresentation 与 Carthage 一起使用,请将依赖项添加到您的 Cartfile

github "Detroit-Labs/SheetPresentation"

运行 carthage update 以构建框架。 然后按照 Carthage 的 README 中的其余步骤将框架添加到您的项目中,配置运行脚本构建阶段等。

使用 SheetPresentation

要使用 SheetPresentation,请创建一个 SheetPresentationManager 并将其设置为您要呈现的视图控制器的 transitioningDelegate,然后将视图控制器的 modalPresentationStyle 设置为 .custom

let manager = SheetPresentationManager() // Save this reference somewhere
let viewControllerToPresent = 
viewControllerToPresent.transitioningDelegate = manager
viewControllerToPresent.modalPresentationStyle = .custom

present(viewControllerToPresent, animated: true, completion: nil)

呈现选项

为了充分利用 SheetPresentation,您需要在您的 SheetPresentationManager 实例上设置一些选项

圆角选项

圆角选项指定呈现的视图的角是否以及如何进行圆角处理

默认值为 .roundAllCorners,半径为 10 点。

暗化视图 Alpha

SheetPresentation 可以在呈现的视图后面放置一个黑色暗化视图。 要控制其不透明度,您可以指定一个 CGFloat 值。 如果您指定 nil,则不会在呈现的视图后面放置暗化视图,并且如果触摸落在呈现的视图之外,触摸将被转发到呈现的视图控制器。

默认值为 50% 不透明度。

边距插值

边距插值控制呈现的视图控制器和呈现的视图之间的距离。 您可以使用 UIEdgeInsetsNSDirectionalEdgeInsets。 此值与安全区域结合使用,因此如果您使用的插值小于安全区域,则将使用安全区域的插值。

默认值为所有侧边 20 点。

忽略边以用于边距

您可以指定一个边数组,以在执行布局时忽略边距(包括安全区域)。 边可以是 DirectionalViewEdgeFixedViewEdge 类型,具体取决于您是否要使用 .leading.trailing(推荐)或 .left.right

默认值是一个空数组,不忽略任何边。

呈现布局

呈现布局控制 SheetPresentation 如何在呈现容器中定位呈现的视图。 指定水平和垂直布局,可以是 .fill 以填充容器,也可以是 .automatic 以自动调整呈现的视图的大小。 自动布局必须指定垂直或水平对齐方式,以控制呈现的视图相对于容器的放置位置。

默认值是 .automatic(.bottom) 的垂直布局和 .fill 的水平布局。

要求

为了在使用自动布局时正确计算呈现的视图控制器的高度,它必须满足使用 systemLayoutSizeFitting(_:withHorizontalFittingPriority:verticalFittingPriority:) 的高度的自动布局约束,或者具有一个非零的 preferredContentSize

动画行为

当呈现的视图控制器被呈现或解除时,这些选项控制此动画的发生方式。 您可以使用 .system 来使用默认的 UIKit 动画,使用 .custom 来提供您自己的符合 UIViewControllerAnimatedTransitioning 协议的动画器对象,或者使用 .present 将视图控制器滑动到或从给定的视图边缘。

默认值为 .system