SheetKit 0.1.2

SheetKit 0.1.2

Akaash Dev 维护。




SheetKit 0.1.2

SheetKit

CI Status Version License Platform

SheetKit 允许您通过几行代码创建底部分页。它还为 iPad 和 iPhone 提供现代卡片式界面动作分页。是的,它支持深色模式,就像 UIKit 中的任何其他 UIView 一样。

Alt Text

SheetKit 支持 ActionItem 类型,如按钮、标题、标题栏、取消按钮、破坏性按钮和分隔符。您也可以为分页创建自定义样式条目。按钮的颜色、图像、图像颜色完全可自定义。也支持无图像的按钮。

SheetKit 还提供名为 PreviewViewController 的底部分页。这些组件通过拖动进行交互性增长,在简短和详细模式下各占用必要空间。每种模式的高度均可完全自定义。

Alt Text

示例

要运行示例项目,首先克隆仓库,然后在 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 可以在三个级别上停止。这些高度由 PreviewViewControllerminimumPreviewHeightmaximumPreviewHeightpreferredPreviewHeight 属性确定。

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 中的 UIActionItemAppActionSheetController 包含 AppActionItem,它定义了面板中的每个项。

可以是以下类型: button、title、header、destructiveButton、cancelButton、separatorcustom

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)

Alt Text

作者

Akaash Dev
[email protected]

 

许可协议

SheetKit可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。