Clavier 是 iOS 的键盘布局指南。它使用相交的 frame 来计算布局指南。
要运行示例项目,请克隆 repo,然后首先从 Example 目录运行 pod install。
Clavier 可通过 CocoaPods 获取。 要安装它,只需将以下行添加到您的 Podfile 中
pod 'Clavier', '~> 2.0.3'
在 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。 如下面的图片所示
如果键盘未与 view 相交,它将始终使用 UIView 的最底部(高度为零)作为常规布局,或者使用安全区域的最底部作为安全布局
如果键盘已隐藏,它将始终使用 UIView 的最底部(高度为零)作为常规布局,或者使用安全区域的最底部作为安全布局
要使用 Clavier,只需从任何 UIView 使用 clavierLayoutGuide,或者如果您喜欢与安全区域相交的布局,则使用 safeClavierLayoutGuide。 它是扩展了 UILayoutGuide 类的 ClavierLayoutGuide 类的实例,因此它具有其所有锚点,例如 topAnchor、leadingAnchor 等。
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 上,Clavier 将默认使用 UIKit 的 keyboardLayoutGuide。 在 safeClavierLayoutGuide 上,它将使用利用 keyboardLayoutGuide 和 safeAreaLayoutGuide 的自定义类
如果您想通过直接使用 view 或使用全局配置进行设置,则可以显式禁用 iOS 15 keyboardLayoutGuide。
myView.usingAppleKeyboardLayoutGuideIfAvailable = false
// or to apply as default with all view
ClavierGlobalConfig.usingAppleKeyboardLayoutGuideIfAvailable = false
您知道怎么做,只需克隆并提出 pull request 即可