SheetPresentation 1.0.0

SheetPresentation 1.0.0

Nathan WalczakJon ShierJeff Kelley 维护。



SheetPresentation

这是一个 UIPresentationController 和相关的类,用于在 iOS 中以类似于动作表的方式将视图控制器固定到屏幕的边缘。

Version Documentation Carthage compatible Swift Package Manager License Platform

安装

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%。

边缘间距

边缘间距控制展示视图控制器与展示视图之间的距离。您可以使用UIEdgeInsetsNSDirectionalEdgeInsets。此值与安全区域结合使用,因此如果您使用比安全区域小的填充,安全区域的填充将被使用。

默认值为所有边缘20点。

忽略边框的边距

您可以为布局指定一个忽略边框(包括安全区域)的数组。边缘可以是DirectionalViewEdgeFixedViewEdge类型,具体取决于您是想使用.leading.trailing(推荐)还是.left.right

默认值是空数组,意味着不忽略任何边缘。

展示布局

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

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

需求

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

动画行为

当展示视图控制器被展示或隐藏时,这些选项控制了动画的方式。你可以使用 .system 来使用默认的 UIKit 动画,使用 .custom 来提供遵从 UIViewControllerAnimatedTransitioning 协议的自定义动画对象,或者使用 .present 来将视图控制器滑动到或从给定的视图边缘。

默认值为 .system