Image

输入栏辅助视图

功能

通过 Swift Package Manager (SPM) 安装

Swift Package Manager 是一个用于自动化 Swift 代码分发的工具,并已集成到 swift 编译器中。一旦你设置好你的 Swift 包,添加 InputBarAccessoryView 作为依赖项就像将其添加到你的 Package.swift 的 dependencies 值中一样简单。

dependencies: [
    .package(url: "https://github.com/nathantannar4/InputBarAccessoryView.git", .upToNextMajor(from: "6.0.0"))
]

您也可以通过 Xcode SPM 编辑器使用 URL 添加它

https://github.com/nathantannar4/InputBarAccessoryView.git

要求

iOS 14.0+ Swift 6

最新的 iOS 13 版本是 v6.5.1

最新的 iOS 12 版本是 v5.5.0

CocoaPods 和 RxExtensions 已在 6.0.0 版本中移除

最新的 iOS 11 版本是 v5.1.0

最新的 Swift 5.0 版本是 v5.1.0

最新的 Swift 4.2 版本是 v4.2.2

文档

开始使用

查看示例项目,了解如何制作 iMessage、Slack、Facebook 和 GitHawk 输入栏!

示例用法

特色应用

将您的应用添加到使用此库的应用列表中,并提交 pull request。

另请参阅

iMessage 风格的 TypingIndicator,用于聊天应用

最新版本

7.0.0

6.5.0

6.4.0

6.3.0

6.2.0

6.1.1

6.1.0

6.0.0

查看 CHANGELOG 以了解更多详情和旧版本。

发现 Bug?提交 Issue!

布局

InputBarAccessoryView 的布局由 4 个 InputStackView 和一个 InputTextView 组成。子视图的内边距可以通过更改 paddingtextViewPadding 属性轻松调整。约束将自动更新。

重要的是要注意,InputTextView 左侧和右侧的每个 InputStackView 都通过宽度约束进行锚定。这样,除了提供可以轻松调用的方法来通过将宽度约束常量设置为 0 来隐藏 InputTextView 右侧或左侧的所有按钮之外,InputTextView 将始终填充两者之间的空间。底部和顶部堆栈视图没有高度约束,而是依赖于它们的 intrinsicContentSize

func setLeftStackViewWidthConstant(to newValue: CGFloat, animated: Bool)

func setRightStackViewWidthConstant(to newValue: CGFloat, animated: Bool)

响应式钩子

每个 InputBarButtonItem 都有属性,可以保存将在各种钩子期间执行的操作,例如按钮被触摸、UITextView 文本更改等等!得益于这些简单的钩子,只需几行代码,就可以轻松地调整项目的大小和动画,类似于 Facebook Messenger 应用程序。

// MARK: - Hooks
    
public typealias InputBarButtonItemAction = ((InputBarButtonItem) -> Void)    
    
private var onTouchUpInsideAction: InputBarButtonItemAction?
private var onKeyboardEditingBeginsAction: InputBarButtonItemAction?
private var onKeyboardEditingEndsAction: InputBarButtonItemAction?
private var onKeyboardSwipeGestureAction: ((InputBarButtonItem, UISwipeGestureRecognizer) -> Void)?
private var onTextViewDidChangeAction: ((InputBarButtonItem, InputTextView) -> Void)?
private var onSelectedAction: InputBarButtonItemAction?
private var onDeselectedAction: InputBarButtonItemAction?
private var onEnabledAction: InputBarButtonItemAction?
private var onDisabledAction: InputBarButtonItemAction?

作者

Nathan Tannar - https://nathantannar.me Jakub Kaspar - https://jakubkaspar.dev

许可

根据 MIT 许可证分发。有关更多信息,请参阅 LICENSE