SheetKit
SheetKit 允许您通过几行代码创建底部分页。它还为 iPad 和 iPhone 提供现代卡片式界面动作分页。是的,它支持深色模式,就像 UIKit 中的任何其他 UIView 一样。
SheetKit 支持 ActionItem 类型,如按钮、标题、标题栏、取消按钮、破坏性按钮和分隔符。您也可以为分页创建自定义样式条目。按钮的颜色、图像、图像颜色完全可自定义。也支持无图像的按钮。
SheetKit 还提供名为 PreviewViewController 的底部分页。这些组件通过拖动进行交互性增长,在简短和详细模式下各占用必要空间。每种模式的高度均可完全自定义。
示例
要运行示例项目,首先克隆仓库,然后在 Example 目录中运行 pod install
。
要求
- iOS 11.0+
- Xcode 10.2+
- Swift 5.0+
安装
SheetKit 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile:
pod 'SheetKit'
使用方法
PreviewViewController
PreviewViewController 可以像任何其他 UIViewController 一样使用。在使用之前无需进行任何特定修改。
将视图添加和约束到控制器的 contentView 属性,而不是 view 属性。
别忘了将内容的顶部锚点和底部锚点与内容视图进行约束。这是通过自动布局引擎自动计算内容高度所必需的。就像滚动视图的工作方式一样。
let controller = PreviewViewController()
let infoView = FriendsInfoView()
infoView.translatesAutoresizingMaskIntoConstraints = false
controller.contentView.addSubview(infoView)
infoView.fillSuperView() // Util method to anchor all four constraints with superview
present(controller, animated: true)
底部的面板准备好了!
PreviewViewController 可以在三个级别上停止。这些高度由 PreviewViewController 的 minimumPreviewHeight、maximumPreviewHeight 和 preferredPreviewHeight 属性确定。
public var minimumPreviewHeight: Dimension? = .fractional(0.54)
public var maximumPreviewHeight: Dimension = .fill(-10)
public var preferredPreviewHeight: Dimension? = nil
Dimension 是一个枚举属性,它会根据父视图的尺寸动态计算值。将该属性传递为 nil 将省略该级别。
初始呈现模式由 initialPosition 属性确定。
controller.initialPosition = .collapsed
AppActionSheetController
AppActionSheetController 包含了上述所有提到的控制高度的属性。
类似于 UIAlertController 中的 UIActionItem,AppActionSheetController 包含 AppActionItem,它定义了面板中的每个项。
可以是以下类型: button、title、header、destructiveButton、cancelButton、separator 和 custom
let controller = AppActionSheetController()
controller.addTitle("Menu")
controller.addActionItem(
AppActionItem(
type: .button,
title: "Change Background",
image: UIImage(named: "action-button-wallpaper"),
handler: { _ in self.handleChangeBackgroundAction() }
)
)
controller.addActionItem(
AppActionItem(
type: .button,
title: "Toggle Theme",
image: UIImage(named: "action-button-theme"),
handler: { _ in self.handleToggleThemeAction() }
)
)
controller.addActionItem(
AppActionItem(
type: .button,
title: "Joey doesn't share food!",
image: UIImage(named: "action-button-share"),
imageTintColor: .flatOrange
)
)
controller.addActionItem(
AppActionItem(
type: .button,
title: "We were on a break!",
image: UIImage(named: "action-button-break"),
imageTintColor: .flatBlue
)
)
controller.addActionItem(
AppActionItem(
type: .destructiveButton,
title: "Delete Background",
image: UIImage(named: "action-button-delete"),
handler: { _ in self.wallpaperImageView.image = nil }
)
)
controller.addCancelButton()
SheetKit 对所有屏幕和多任务窗口都完全适应性。要使用适应性版本 ActionSheetController,请使用 AppActionSheetPopViewController 并传递弹出提示所需的 sourceView。它使用弹出提示的 present 方法来适应不同屏幕。
let controller = AppActionSheetPopViewController(sourceView: settingsButton)
present(controller, animated: true)
作者
Akaash Dev
[email protected]
许可协议
SheetKit可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。