KeyboardLayoutGuide 0.7.2

KeyboardLayoutGuide 0.7.2

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2019年10月
SPM支持 SPM

John Morgan 维护。



⌨️KeyboardLayoutGuide⌨️

Version License Swift

想象一下能够直接在视图和 iOS 键盘之间设置 Auto Layout 约束,这样当键盘的框架发生变化时,布局也会更新。KeyboardLayoutGuide 可以实现这一点,提供选项,完全在 Interface Builder 中或通过简单的接口在代码中实现。

constrainKeyboard(myView) { keyboard, myView in
    
    // create and return your keyboard-based constraints
}

使用

通过代码

将您的视图控制器声明为符合 KeyboardConstraining。这是一个空协议,使许多方法可用,使您能够做类似以下的事情:

constrainKeyboard(contentView) { keyboard, contentView in
    
    return [keyboard.topAnchor.constraint(equalTo: contentView.bottomAnchor)]
}

contentView 的底部现在将被约束到键盘的顶部,并在键盘的框架发生变化时更新。您可以使用原始的 Auto Layout 或任何第三方库来创建约束。它们将在视图添加到窗口时激活,并在 viewWillDisappear 时取消激活。

对于更复杂的示例,想象一个视图,其中表格视图的底部应该位于标签栏或键盘的顶部,以较高的那个为准。在这种情况下,您会将您的 tableView 的底部约束到 bottomLayoutGuide 的顶部,优先级低于 1000(因为它需要当键盘出现时被打破)。与键盘的不等式约束结合使用,这将确保正确的行为。

constrainKeyboard(tableView) { keyboard, tableView in
    
    return [keyboard.topAnchor.constraint(greaterThanOrEqualTo: tableView.bottomAnchor)]
}

通过 Interface Builder

简单地将一个新的 UIView 添加到您的视图中。这将成为您的键盘代理,所以将其分配给视图控制器的 klg_keyboardProxy 属性。在运行时,键盘代理的框架将约束为匹配键盘,因此您可以在其它视图和键盘代理之间添加任何所需的约束。

虽然约束将在运行时添加,但您仍需要让 Interface Builder 确认键盘代理具有有效的布局。在代理和其父视图之间添加 leadingtrailingbottomheight 约束。这些占位符约束会满足 Interface Builder,但您应该确保在构建时移除它们,通过在 Interface Builder 中检查每个的 Placeholder ☑ Remove at build time。您可以通过调整键盘代理上的 height 约束来预览键盘出现时布局的变化。

如何工作的?

使用 LifecycleHooks 添加到您的视图控制器以进行生命周期驱动的行为。由于键盘布局指南附加到窗口本身,因此其框架不受视图框架更改的影响。

安装

CocoaPods

KeyboardLayoutGuide 通过 CocoaPods 提供。要安装它,简单地将以下行添加到您的 Podfile 中

pod "KeyboardLayoutGuide"

Carthage

将以下内容添加到您的 Cartfile 中

github "johnpatrickmorgan/KeyboardLayoutGuide"

Swift Package Manager

将以下内容添加到您的 Package.swift 文件的 dependencies 数组中

dependencies: [
	.package(url: "https://github.com/johnpatrickmorgan/KeyboardLayoutGuide.git", from: "0.7.1")
]

许可证

KeyboardLayoutGuide 项目可以通过 MIT 许可证获取。更多信息请参阅 LICENSE 文件。