AGInputControls 1.1.3

AGInputControls 1.1.3

Igor Vedeneev 维护。



  • ivedeneev

AGInputControls

此库包含 3 个 UITextField 子类

  • OTPCodeTextField - 短信验证码输入框
  • PhoneTextField - 电话输入框(当前只支持一种电话掩码)
  • FloatingLabelTextField - 类似 Android 浮动占位符文本输入框(动画效果)
  • 额外功能: UIFont 扩展,提供给定字体的单字间距版本。对于短信代码输入可能很有用。

How it looks

How it looks

安装

CocoaPods

pod AGInputControls

Carthage

github "ivedeneev/AGInputControls"

Swift 包管理器

将此行添加到您的 Package.swift 文件:.package(url: "https://github.com/ivedeneev/AGInputControls", branch: "master")

库还提供了一个基本的类 FormattingTextField,它可以格式化输入文本并尊重给定的掩码。 重要说明: FormattingTextField 仅支持数字。您可以在掩码中使用特殊字符,如空格或破折号。掩码示例:+X (XXX) XXX-XX-XX。可能导致未知行为的掩码示例:+7 (9XX) XXX-XX-XX。PhoneTextField 和 FloatingLabelTextField 都是 FormattingTextField 的子类。

UIFont 单字间距

import AGInputControls

let codeFont = UIFont(name: "Avenir", size: 30)?.monospaced

OTPCodeTextField

您可以使用此文本输入框进行短信验证码输入。

  • 支持根据给定字体自动调整大小。 使用单字间距字体是强烈推荐的
  • 支持系统自动填充
  • 支持数字装饰(每个数字的下方是下划线破折号或圆角矩形)

使用方法

    let codeField = OTPCodeTextField()
    codeField.decoration = .rect // Decoration: rounded rects, dashes or none. See OTPCodeField.Decoration
    codeField.decorationColor = UIColor.systemGreen // Color of decoration elements
    codeField.letterSpacing = 20 // Spacing between digits
    codeField.length = 6 // Number of digits in code
    codeField.showCaret = false // Show or hide caret

当前限制

  • 不支持占位符
  • 无法使用复制/剪切/粘贴操作

PhoneTextField

您可以使用此文本输入框进行手机号码输入

使用方法

    let codeField = PhoneTextField()
    codeField.phoneMask = "+# (###) ###-##-##"
  • 支持根据给定字体和掩码自动调整大小
  • 支持常量前缀。例如:如果只支持以 +7 开头的手机号码,您可以指定电话掩码为:+7 ### ###-##-##,+7 前缀将成为“常量”,用户将无法删除或编辑它

当前限制

  • 目前只支持一种电话掩码。

您可以通过继承 PhoneTextField 并重写 formattedText(text:) 方法或使用 formattingDelegate 属性来自定义格式化行为,不创建子类来覆盖此行为

FloatingLabelTextField

FloatingLabelTextField 是一个 UITextField 子类,类似于 Material design text field

使用方法

    let floatTextField = FloatingLabelTextField()
    floatTextField.formattingMask = "##/##" // Formatting mask
    floatTextField.placeholder = "Expires at"
    floatTextField.textPaddings = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 0) // Paddings for text and floating placeholder
    floatTextField.highlightsWhenActive = true // Placeholder and underline view and bottom label are filled by tintColor when textfield is active

    floatTextField.errorTintColor = .systemRed
    floatTextField.isError = true // if true, placeholder and underline view and bottom label are filled by errorTintColor
  • 支持根据给定字体和填充自动调整高度
  • 支持输入掩码
  • placeholderColor 用于默认状态下颜色下划线视图和底部标签
  • 如果您不需要任何格式化行为,请不要指定 formattingMask(默认为 nil)

FormattingTextField

您可以使用此文本输入框对数字进行格式化输入,例如电话号码、信用卡数据(号码、有效期、cvv)等。您应该指定 formattingMask 属性使其生效。格式化掩码有两个限制

  • 不允许有数字或字母
  • ## 是数字占位符
  • ## 是字母占位符
  • ? 是字母或数字的占位符

使用方法

    let floatTextField = FormattingTextField()
    floatTextField.formattingMask = "##/##"

如果您需要自定义格式行为,可以继承 FormattingTextField 并创建自己的文本字段。在这种情况下,您应该重写格式化函数。

class MyTextField: FormattingTextField {
    override func formattedText(text: String?) -> String? {
        return text?.uppercased()
    }
}

请记住: PhoneTextFieldFloatingLabelTextField 是从 FormattingTextField 继承而来