一个用于 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
。