Clavier

Clavier 是 iOS 的键盘布局指南。它使用相交的 frame 来计算布局指南。

codebeat badge build test SwiftPM Compatible Version License Platform

示例

要运行示例项目,请克隆 repo,然后首先从 Example 目录运行 pod install

要求

安装

要求

Cocoapods

Clavier 可通过 CocoaPods 获取。 要安装它,只需将以下行添加到您的 Podfile 中

pod 'Clavier', '~> 2.0.3'

XCode 中的 Swift Package Manager

来自 Package.swift 的 Swift Package Manager

Package.swift 中添加为您的目标依赖项

dependencies: [
    .package(url: "https://github.com/hainayanda/Clavier.git", .upToNextMajor(from: "2.0.3"))
]

在您的目标中使用它,就像使用 Clavier 一样

 .target(
    name: "MyModule",
    dependencies: ["Clavier"]
)

作者

Nayanda Haberty, hainayanda@outlook.com

许可证

Clavier 在 MIT 许可下可用。 有关更多信息,请参见 LICENSE 文件。


基本用法

Clavier 是为约束到键盘而创建的键盘布局指南。 它会在键盘更改时自动更改。 它计算键盘和 UIView 的相交 frame。 如下面的图片所示

alt text

如果键盘未与 view 相交,它将始终使用 UIView 的最底部(高度为零)作为常规布局,或者使用安全区域的最底部作为安全布局

alt text

如果键盘已隐藏,它将始终使用 UIView 的最底部(高度为零)作为常规布局,或者使用安全区域的最底部作为安全布局

用法

要使用 Clavier,只需从任何 UIView 使用 clavierLayoutGuide,或者如果您喜欢与安全区域相交的布局,则使用 safeClavierLayoutGuide。 它是扩展了 UILayoutGuide 类的 ClavierLayoutGuide 类的实例,因此它具有其所有锚点,例如 topAnchorleadingAnchor 等。

myView.bottomAnchor.constraints(equalTo: mySuperview.clavierLayoutGuide.topAnchor)

或者使用安全区域

myView.bottomAnchor.constraints(equalTo: mySuperview.safeClavierLayoutGuide.topAnchor)

myView 将根据键盘布局指南 frame 的更改自动移动。

由于它是 UILayoutGuide 的子类,因此它具有 layoutFrame,layoutFrame 是与键盘 frame 相交的 frame(如果您需要它)

let frameIntersectWithKeyboard: CGRect = view.clavierLayoutGuide.layoutFrame

或者使用安全区域

let frameIntersectWithKeyboard: CGRect = view.safeClavierLayoutGuide.layoutFrame

iOS 15

在 iOS 15 上,Clavier 将默认使用 UIKit 的 keyboardLayoutGuide。 在 safeClavierLayoutGuide 上,它将使用利用 keyboardLayoutGuidesafeAreaLayoutGuide 的自定义类

如果您想通过直接使用 view 或使用全局配置进行设置,则可以显式禁用 iOS 15 keyboardLayoutGuide

myView.usingAppleKeyboardLayoutGuideIfAvailable = false

// or to apply as default with all view

ClavierGlobalConfig.usingAppleKeyboardLayoutGuideIfAvailable = false

贡献

您知道怎么做,只需克隆并提出 pull request 即可