一个用于 iOS 的 UIPresentationController 及相关类,用于呈现一个视图控制器,该视图控制器像操作表一样固定在屏幕边缘。
要将 SheetPresentation 与 Swift Package Manager 一起使用,请在 Xcode 中将其作为依赖项添加到您的项目中,或者将其作为依赖项添加到您的 Package.swift 文件中。
要将 SheetPresentation 与 CocoaPods 一起使用,请将依赖项添加到您的 Podfile 中
target 'MyAwesomeApp' do
pod 'SheetPresentation'
end
然后运行 pod install 并使用生成的 .xcworkspace 打开您的项目。
要将 SheetPresentation 与 Carthage 一起使用,请将依赖项添加到您的 Cartfile 中
github "Detroit-Labs/SheetPresentation"
运行 carthage update 以构建框架。 然后按照 Carthage 的 README 中的其余步骤将框架添加到您的项目中,配置运行脚本构建阶段等。
要使用 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,它接受一个 CGFloat 角半径,用给定的半径对所有角进行圆角处理。.roundSomeCorners,它接受一个 CGFloat 角半径和一个 CACornerMask 来指定应该对哪些角进行圆角处理。.none 使呈现的视图的角保持原样。默认值为 .roundAllCorners,半径为 10 点。
SheetPresentation 可以在呈现的视图后面放置一个黑色暗化视图。 要控制其不透明度,您可以指定一个 CGFloat 值。 如果您指定 nil,则不会在呈现的视图后面放置暗化视图,并且如果触摸落在呈现的视图之外,触摸将被转发到呈现的视图控制器。
默认值为 50% 不透明度。
边距插值控制呈现的视图控制器和呈现的视图之间的距离。 您可以使用 UIEdgeInsets 或 NSDirectionalEdgeInsets。 此值与安全区域结合使用,因此如果您使用的插值小于安全区域,则将使用安全区域的插值。
默认值为所有侧边 20 点。
您可以指定一个边数组,以在执行布局时忽略边距(包括安全区域)。 边可以是 DirectionalViewEdge 或 FixedViewEdge 类型,具体取决于您是否要使用 .leading 和 .trailing(推荐)或 .left 和 .right。
默认值是一个空数组,不忽略任何边。
呈现布局控制 SheetPresentation 如何在呈现容器中定位呈现的视图。 指定水平和垂直布局,可以是 .fill 以填充容器,也可以是 .automatic 以自动调整呈现的视图的大小。 自动布局必须指定垂直或水平对齐方式,以控制呈现的视图相对于容器的放置位置。
默认值是 .automatic(.bottom) 的垂直布局和 .fill 的水平布局。
为了在使用自动布局时正确计算呈现的视图控制器的高度,它必须满足使用 systemLayoutSizeFitting(_:withHorizontalFittingPriority:verticalFittingPriority:) 的高度的自动布局约束,或者具有一个非零的 preferredContentSize。
当呈现的视图控制器被呈现或解除时,这些选项控制此动画的发生方式。 您可以使用 .system 来使用默认的 UIKit 动画,使用 .custom 来提供您自己的符合 UIViewControllerAnimatedTransitioning 协议的动画器对象,或者使用 .present 将视图控制器滑动到或从给定的视图边缘。
默认值为 .system。