UITextField
的子类,它在文本下方添加动画占位符和可选的提示标签。
它支持文本背景中的任意视图(提供了轮廓和下划线视图),以及左右视图、文本对齐方式、灵活的内边距和偏移量。
要运行示例项目,请克隆仓库,并首先从 Example 目录运行 pod install
。
使用 Swift 5 编写。需要 iOS 9。
Swift 支持
Swift 版本 | 库版本 |
---|---|
3 | <= 0.2.1 |
4 | <= 0.12.1 |
5 | 从 0.13.0 起 |
RAGTextField
可通过 Swift Package Manager (SPM)、CocoaPods 和 Carthage 获取。
将以下行添加到你的 Podfile
pod "RAGTextField"
请在终端中调用 pod try RAGTextField
尝试该 pod。
将以下行添加到你的 Cartfile
github "raginmari/RAGTextField"
安装库并导入模块 RAGTextField
后,可以像使用任何其他文本字段一样使用此文本字段(在代码和你的 Storyboard 和 nib 文件中)。
这些是与 UITextField
的主要区别
文本字段的许多属性都是 IBInspectable
。
占位符替换了超类的占位符。分配给 placeholder
属性的值完全由 RAGTextField
处理。占位符的文本对齐方式与文本字段的文本对齐方式相匹配。
这些是您可以自定义占位符的外观和行为的不同方式
placeholderFont
属性为占位符分配自定义字体或字体大小。默认情况下,占位符使用文本字段的字体。placeholderColor
属性更改占位符的颜色。默认情况下,占位符使用文本字段的文本颜色。transformedPlaceholderColor
属性设置在文本字段正在编辑且占位符转换为其浮动位置时应用于占位符的颜色。placeholderScaleWhenEditing
属性指定应用于占位符在其文本上方浮动位置的缩放比例。默认值为 1。scaledPlaceholderOffset
属性从文本偏移占位符在其浮动位置的距离。默认值为 0。正值向上移动占位符,使其远离文本。placeholderMode
属性的值决定了占位符的行为scalesWhenEditing
(默认值):当文本字段成为第一响应者时,占位符立即转换。此外,只要文本字段中有文本,占位符就会保持转换状态。scalesWhenNotEmpty
:只要文本字段中有文本,占位符就会立即转换并保持转换状态。scalesAlways
:占位符始终以转换后的位置显示。simple
:禁用浮动占位符。占位符的行为类似于超类。placeholderAnimationDuration
属性调整占位符在移动到或从浮动位置移动时的动画持续时间。如果值为 nil
,则使用默认值。将值设置为 0 以禁用占位符动画。默认情况下禁用提示标签,并且当 hint
属性的值为 nil
时也禁用。如果为 hint
属性分配了非 nil 值(包括空字符串),则会更新标签的布局并为提示标签预留空间。提示的文本对齐方式与文本字段的文本对齐方式相匹配。提示支持多行文本。
这些是您可以自定义提示外观的不同方式
hintFont
属性为提示分配自定义字体或字体大小。默认情况下,提示使用文本字段的字体。hintColor
属性更改提示的颜色。默认情况下,提示使用文本字段的文本颜色。hintOffset
属性从文本偏移提示标签的距离。默认值为 0。正值向下移动提示,使其远离文本。layoutAlwaysIncludesHint
属性始终将提示标签保留在布局中,即使 hint
值是 nil
。此属性的默认值为 false
。通过将任意视图分配给 textBackgroundView
属性,将视图添加到文本的背景中。其 frame 在需要时由 RAGTextField
更新。视图的大小调整为与文本(以及占位符和/或提示)的大小加上内边距相匹配。
这些是您可以自定义文本背景视图外观的不同方式。
textPadding
属性将内边距应用于文本。内边距会扩展文本背景视图。默认情况下,内边距为 .zero
。textPaddingMode
属性将文本内边距仅应用于文本,或者除了文本之外还应用于占位符、提示或两者。可用于将相应的子视图包裹到文本背景视图中。示例项目使用了文本内边距模式。使用 UnderlineView
类在文本下方绘制动画下划线。将该类的实例分配给文本字段的 textBackgroundView
属性。下划线的外观可以由视图本身自动更新(请参阅其 textField
属性),也可以从视图控制器或文本字段委托手动控制。示例项目使用了下划线视图。
使用 OutlineView
类在文本周围绘制轮廓。轮廓可以具有圆角,并且可以填充和内插。将该类的实例分配给文本字段的 textBackgroundView
属性。根据 textPaddingMode
值,轮廓可以选择性地包括占位符和/或提示标签。
如果你想将此文本字段与出色的 Bond 一起使用,你可以添加这些扩展,以便可以绑定到 hint
和 placeholder
属性
extension ReactiveExtensions where Base: RAGTextField {
var hint: Bond<String?> {
return bond { textField, hint in
textField.hint = hint
}
}
var placeholder: Bond<String?> {
return bond { textField, placeholder in
textField.placeholder = placeholder
}
}
}
这些是 RAGTextField
的已知或可能存在的问题
UITextField
的 attributedText
属性 *可能* 不受支持。UITextField
的 attributedPlaceholder
不受支持。borderStyle
属性应为 .none
。这些问题有望在未来的更新中得到解决。
raginmari, reimar.twelker@web.de
RAGTextField 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。