SheetPresentation
这是一个 UIPresentationController
和相关的类,用于在 iOS 中以类似于动作表的方式将视图控制器固定到屏幕的边缘。
安装
Swift 包管理器
要使用 Swift 包管理器与 SheetPresentation 一起,请在 Xcode 内或在您的 Package.swift
文件中将它作为依赖项添加到您的项目中。
CocoaPods
要使用 CocoaPods 与 SheetPresentation 一起,请将依赖项添加到您的 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
,它接受一个CGFloat
类型的圆角半径,用给定的半径绕所有角落进行圆角处理。.roundSomeCorners
,它接受一个CGFloat
类型的圆角半径和一个CACornerMask
来指定哪些角落应该圆角。.none
不改变展示视图的角落。
默认值是半径为10点的.roundAllCorners
。
渐变视图透明度
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
。