RAGTextField 0.14.0

RAGTextField 0.14.0

测试测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2020年7月
SPM支持 SPM

raginmari 维护。



  • By
  • raginmari

RAGTextField

CI Status Version License Platform Carthage compatible

UITextField 的子类,增加了动画占位符和可选的提示标签。

它支持在文本背景中放置任意视图(提供了轮廓和下划线视图),以及左边和右边的视图,文本对齐,灵活的内边距和偏移量。

示例

要运行示例项目,请克隆仓库,并首先从 Example 目录中运行 pod install

要求

用 Swift 5 编写,需要 iOS 9。

Swift 支持

Swift 版本 库版本
3 <= 0.2.1
4 <= 0.12.1
5 从 0.13.0 开始

安装

RAGTextField 通过 CocoaPodsCarthage 提供。

Cocoapods

将以下行添加到您的Podfile中

pod "RAGTextField"

请在终端中调用脚本来尝试使用pod pod try RAGTextField

Carthage

将以下行添加到您的Cartfile中

github "raginmari/RAGTextField"

如何使用

在安装库并导入模块 RAGTextField 后,文本字段可以像任何其他文本字段一样使用(在代码中以及在您的故事板和nibs中)。

UITextField 的主要区别如下

  • 浮动占位符,灵感来源于谷歌 Material Design 指南中描述的一个。
  • 以下方的实际文本的 提示标签,可以用来提供额外提示或报告错误。
  • 文本背景 视图(不包括占位符和提示标签)可用于自定义文本输入的样式。示例项目使用此功能。

许多文本字段的属性都是 IBInspectable

占位符

占位符替换了超类占位符。分配给 placeholder 属性的值由 RAGTextField 独占处理。占位符的文本对齐方式与文本字段的文本对齐方式相匹配。

您可以通过以下不同的方式自定义占位符的 外观和行为

  • 使用 placeholderFont 属性为占位符分配一个 自定义字体或字体大小。默认情况下,占位符使用文本字段的字体。
  • 使用 placeholderColor 属性更改占位符的 颜色。默认情况下,占位符使用文本字段的文本颜色。
  • 使用 transformedPlaceholderColor 属性设置在文本字段被编辑且占位符转换为浮动位置时应用于占位符的颜色。
  • 使用 placeholderScaleWhenEditing 属性来指定 在浮动位置的占位符应用的缩放。默认值为 1。
  • 使用 scaledPlaceholderOffset 属性来偏移占位符在浮动位置的文本。默认值为 0。正数值 将占位符向上移动,远离文本。
  • placeholderMode 属性的值决定了 占位符的行为
    • scalesWhenEditing (默认): 当文本字段成为第一个响应者时,占位符即被变换。此外,只要文本字段中有文本,占位符就会保持变换。
    • scalesWhenNotEmpty: 文本字段中有文本时,占位符立即和持续地被变换。
    • scalesAlways: 占位符总是以变换后的位置显示。
    • simple: 禁用浮动占位符。占位符的行为类似于其超类。
  • 使用 placeholderAnimationDuration 属性来调整 占位符在移动到或从浮动位置时的动画持续时间。如果值设置为 nil,则使用默认值。将值设置为 0 以 禁用 占位符动画。

提示标签

默认禁用提示标签,并且当 hint 属性的值为 nil 时。如果将非空值(包括空字符串)赋给 hint 属性,则会更新标签的布局并保留提示标签的空间。提示的文本对齐方式与文本字段的文本对齐方式相匹配。提示支持多行文本。

以下是您可以用来 自定义提示外观 的不同方法

  • 使用 hintFont 属性将 自定义字体或字体大小 分配给提示。默认情况下,提示使用文本字段的字体。
  • 使用 hintColor 属性改变提示的颜色。默认情况下,提示使用文本字段的文本颜色。
  • 使用 hintOffset 属性将提示标签从文本中偏移。默认值为 0。正数值 将提示向下移动,远离文本。
  • 使用 layoutAlwaysIncludesHint 属性始终将提示标签保留在布局中,即使 hint 值为 nil。此属性的默认值是 false

文本背景视图

通过将任意视图赋值给 textBackgroundView 属性,在文本的背景中添加视图。视图的框架在需要时由 RAGTextField 更新。视图的大小使它匹配文本(以及占位符和/或提示)的大小加上内边距。

以下是您可以用来 自定义文本背景视图外观 的不同方法。

  • 使用 textPadding 属性为文本应用内边距。内边距扩大文本背景视图。默认情况下,内边距为 0
  • 使用 textPaddingMode 属性将文本填充应用到文本本身、占位符、提示信息或全部。可以将相应的子视图包裹在文本背景视图中。示例项目中使用了文本填充模式。

下划线视图

使用类 UnderlineView 在文本下方绘制一个 动画下划线。将类的实例赋值给文本字段的 textBackgroundView 属性。下划线的样式可以由视图本身自动更新(参见其 textField 属性),也可以由视图控制器或文本字段代理手动控制。示例项目使用了下划线视图。

轮廓视图

使用类 OutlineView 在文本周围绘制一个轮廓。轮廓可以具有圆角,也可以填充和内嵌。将类的实例赋值给文本字段的 textBackgroundView 属性。根据 textPaddingMode 的值,轮廓可以包含占位符和/或提示标签。

连接

如果您想使用带 Bond 的文本字段,可以添加这些扩展,以便您可以将 hintplaceholder 属性绑定。

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, [email protected]

许可证

RAGTextField是在MIT许可证下可用的。有关更多信息,请参阅LICENSE文件。