RYFloatingInput
RYFloatingInput,受“浮动标签模式”启发,并使用 RxSwift & mvvm 模式实现,提供可完全自定义的文本输入控制,以及 painless 的文本验证。
功能
- 浮动标签模式
- 支持自定义:主题、颜色、图标
- 直观的文本输入验证和回调
安装
CocoaPods
在 CocoaPods 上可用。只需将以下内容添加到您的项目 Podfile 中即可。
pod 'RYFloatingInput'
入门
从界面构建器设置
- 将一个 UIView 实例拖入你的 UIViewController/UIView
- 将 UIView 实例的类更改为
RYFloatingInput
。 - 将 UIView 实例的模块更改为
RYFloatingInput
。 - 将其连接到 UIViewController/UIView 的 IBOutlet 实例。
编程式设置
创建一个 RYFloatingInput
实例并将其添加到父视图中
let floatingInput = RYFloatingInput(frame: frame)
self.view.addSubview(floatingInput)
使用方法
设置构建器
RYFloatingInputSetting
是使 RYFloatingInput
正确工作的必需品,它将所有设置和自定义组合成一个单一的构建函数。以下是步骤:
- 使用
RYFloatingInputSetting.Builder
初始化RYFloatingInputSetting
实例 - 添加功能和自定义
- 通过创建
RYFloatingInputSetting
实例来设置RYFloatingInput
示例
let setting = RYFloatingInputSetting.Builder.instance()
.theme(.dark)
.iconImage(UIImage(named: "image_name")!)
.placeholer("I AM PLACEHOLDER")
.secure(true)
.build()
floatingInput.setup(setting: setting)
输入文本验证
在 RYFloatingInput
中设置文本验证非常简单,只需要在设置构建器中添加 .maxLength
或 .inputType
实现,即可完成。您还可以自定义警告消息,并在任何无效输入发生时触发回调事件。不需要复杂代理。
输入类型验证的 2 个选项
.number
- 仅接受数字输入。.regex(pattern: String)
- 使用您想要的正则表达式检查输入文本。
示例
RYFloatingInputSetting.Builder.instance()
.theme(.standard)
.maxLength(8, onViolated: (message: "Exceed max length", callback: {
print("Exceed max length")
}))
.inputType(.number, onViolated: (message: "Invalid input, number only", callback: {
print("Invalid input, number only")
}))
.build()
颜色和主题定制
颜色定制在几乎所有的组件(比如背景、分隔符、占位符、警告标签和输入光标)中实现了,以下是一些颜色定制的选项:
RYFloatingInputSetting.Builder.instance()
.backgroundColor(.clear)
.textColor(.darkText)
.placeholderColor(.lightGray)
.dividerColor(.lightGray)
.cursorColor(.blue)
.accentColor(.cyan)
.warningColor(.red)
.build()
通常情况下,分隔符和悬浮标签会显示为强调色,一旦输入无效文本则变为警告色。
主题是一种更便捷的方式来自定义颜色,它涵盖了上述所有颜色选项。在 RYFloatingInput.Theme
中定义了3种主题选项:
.standard
- 默认.light
.dark
RYFloatingInputSetting.Builder.instance()
.theme(.light)
.build()
请注意,如果在构建器中同时设置了主题和颜色定制(如文本颜色),则主题中的文本颜色将被忽略。
分隔符高度
提供了3种分隔符高度选项: .thin
、.regular
、.bold
。默认为 .regular
。
RYFloatingInputSetting.Builder.instance()
.dividerWeight(.thin)
.build()
图标 / 占位符 / 密文文本
设置输入图标、占位符、密文文本选项。
RYFloatingInputSetting.Builder.instance()
.iconImage(UIImage(named: "image_name")!)
.placeholer("I AM PLACEHOLDER")
.secure(true)
.build()
待办事项
- 可定制的分隔符高度 - v0.1.2
- 支持自定义字体
- 多种文本验证条件
- 活动指示器 & 同步任务完成事件
依赖关系
RxSwift - Swift中的响应式编程
许可证
RYFloatingInput 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。
作者
Ray ChengJui YU - [email protected]