说明
SafeAreaInputAccessoryViewWrapperView
用于将视图包裹以用作 inputAccessoryView
。没有这个,设置视图为 inputAccessoryView
将会忽略安全区域布局。例如,iPhone X 的主屏幕指示器将会争夺同样的空间。这个类确保视图遵守安全区域布局,并且不会覆盖系统 UI 元素,如 iPhone X 的主屏幕指示器。
适用于 iOS 9.0+ 和 Xcode 9.0.0+。
内容
功能
- 与所有运行 iOS 9+ 的设备兼容。
- 在 iOS 11+ 的设备上遵守
safeAreaLayoutGuide
。例如,包裹的视图会上滑以为 iPhone X 的主屏幕指示器腾出空间。 - 使用自动布局约束动态设置包裹视图的高度。不再需要手动设置框架!
- 展示了如何使具有始终可见的
inputAccessoryView
的应用程序示例,即使在键盘关闭时也是如此。
用法
- 使用
SafeAreaInputAccessoryViewWrapperView(for:)
将任何 UIView/UIButton/UILabel 等封装。
SafeAreaInputAccessoryViewWrapperView(for: button)
- 在这个类的某个地方存储对该视图的引用。
let button = UIButton(type: .system)
lazy var wrappedButton: SafeAreaInputAccessoryViewWrapperView = {
return SafeAreaInputAccessoryViewWrapperView(for: button)
}()
- 在
inputAccessoryView
返回该引用。
override var inputAccessoryView: UIView? {
return wrappedButton
}
- (可选) 当键盘关闭时也总是显示
inputAccessoryView
。
override var canBecomeFirstResponder: Bool {
return true
}
override func viewDidLoad() {
super.viewDidLoad()
becomeFirstResponder()
}
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。
CocoaPods 0.36 增加了 Swift 和嵌入式框架的支持。您可以使用以下命令安装:
$ gem install cocoapods
要使用 CocoaPods 将 SafeAreaInputAccessoryViewWrapperView
集成到您的 Xcode 项目中,请在您的 Podfile
中指定它。
pod 'SafeAreaInputAccessoryViewWrapperView'
然后,运行以下命令
$ pod install
如果 Xcode 抱怨("无法加载 SafeAreaInputAccessoryViewWrapperView 的底层模块"),请转到产品并选择清理(或只需按 ⇧⌘K)。
手动
如果您不想使用 CocoaPods,可以手动将 SafeAreaInputAccessoryViewWrapperView
集成到项目。
许可
SafeAreaInputAccessoryViewWrapperView
由 Jeff Burt 在 StockX 开发,并按 MIT 许可证发布。有关详细信息,请参阅 LICENSE
文件。
联系
欢迎关注我的个人Twitter账号:jeffburtjr。如果您在此项目中发现任何问题或有任何改进意见,请随意在GitHub上创建问题并/或发起拉取请求。