GenericPasswordRow 3.1.0

GenericPasswordRow 3.1.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上一次发布2020年7月
SPM支持 SPM

Diego ErnstMathias Claassen 维护。



  • Diego Ernst

GenericPasswordRow

Build status Platform iOS Swift 4 compatible Carthage compatible CocoaPods compatible License: MIT

Xmartlabs SRL 开发。

内容

介绍

GenericPasswordRow 是为 Eureka 设计的密码行的自定义行,用于 创建密码。它的主要目的是根据一套验证来引导用户完成这个流程。

  • 特性
    • 可见性
    • 密码强度
    • 提示

用法

import Eureka
import GenericPasswordRow

class ViewController: FormViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        form +++ Section()
            <<< GenericPasswordRow()
    }
}

要求

  • iOS 9.0+
  • Xcode 11.5+
  • Eureka ~> 5.2.1

参与

  • 如果您想贡献力量,请随时提交拉取请求
  • 如果您有功能请求,请提交问题
  • 如果您找到了一个bug或者需要帮助,请在提交问题之前先检查旧的 FAQStackOverflow (Tag 'GenericPasswordRow') 上的线程。

在贡献之前,请查阅 CONTRIBUTING 文件以获取更多信息。

如果您在您的应用程序中使用 GenericPasswordRow,我们很想了解!在 twitter 上给我们留言。

示例

按照以下步骤运行示例项目

  • 克隆 GenericPasswordRow 仓库
  • 在下载的文件夹中打开终端并运行 bin/setup 脚本
  • 打开 GenericPasswordRow 工作空间
  • 运行 Example 项目。

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。

要安装 GenericPasswordRow,只需在您的 Podfile 中添加以下行

pod 'GenericPasswordRow', '~> 3.1'

Carthage

Carthage 是 Cocoa 的一个简单、去中心化的依赖关系管理器。

要安装 GenericPasswordRow,只需将以下行添加到您的 Cartfile

github "EurekaCommunity/GenericPasswordRow" ~> 3.1

定制

对于基本样式,如字体、颜色、边距、分隔符,您应使用 cellSetupcellUpdate。否则,您应该能够提供完全不同的设计(不同的 nib 文件)并重用已实现的功能。

GenericPasswordRow 参数

  • var passwordValidator: PasswordValidator = DefaultPasswordValidator():用于定义密码需要满足的规则的 PasswordValidator。请参阅 实现自定义验证
  • var placeholder: String? = "Password":密码文本字段的占位符。

例如,您可以这样做

<<< GenericPasswordRow() {
      $0.passwordValidator = // instantiate your custom validator
      $0.placeholder = "Create a password"
  }

GenericPasswordCell 参数

  • @IBOutlet weak var textField: UITextField!:
    密码文本字段。
  • @IBOutlet weak var visibilityButton: UIButton?:
    用于切换 textFieldsecureTextEntry 属性的可见性按钮。
  • @IBOutlet weak var passwordStrengthView: PasswordStrengthView?:
    一个自定义强度指示器设计的 PasswordStrengthView 子类。请参阅 PasswordStrengthView
  • @IBOutlet weak var hintLabel: UILabel?:
    用于在用户输入密码时显示提示的标签。
  • var visibilityImage: (on: UIImage?, off: UIImage?):
    根据文本字段的 secureTextEntry 状态设置的可见性按钮的图像。
  • var dynamicHeight = (collapsed: UITableViewAutomaticDimension, expanded: UITableViewAutomaticDimension):
    cell 收缩(Btn标签隐藏)和展开(Hint标签不为空)时的高度。该属性是 nib 特定的。

创建自定义 nib 文件

你可能想要遵循自己的设计。为了实现这一点,你应该遵循以下步骤

  • 创建一个用户界面 xib 文件,并使用 Xcode 的 Interface Builder 进行编辑。你应该添加一个简单的 UITableViewCell 并将其类设置为 GenericPasswordCell

  • 添加一个 UITextField 用于密码输入,并将其连接到 textField 输出。

  • [可选] 添加一个 UIButton 并将其连接到 visibilityButton

  • [可选] 添加一个 PasswordStrengthView 子类并将其连接到 passwordStrengthView 输出。

  • [可选] 添加一个 UILabel 并将其连接到 hintLabel 输出。

  • 指定您想使用新创建的 nib 文件。您可以通过两种方式做到这一点

    • 使用 RowDefaults:如果您只想在您的应用程序中使用此自定义 GenericPasswordRow,请使用此方法。
     GenericPasswordRow.defaultRowInitializer = {
             $0.cellProvider = CellProvider<GenericPasswordCell>(nibName: "MyPasswordCell", bundle: nil)
         }
    • 或者创建一个自定义行继承自 _GenericPasswordRow
     final class MyPasswordRow: _GenericPasswordRow, RowType {
         required init(tag: String?) {
             super.init(tag: tag)
             cellProvider = CellProvider<GenericPasswordCell>(nibName: "MyPasswordCell", bundle: nil)
         }
     }

自定义强度视图

如果您提供自定义 nib 文件,还可以提供不同于 DefaultPasswordStrengthViewPasswordStrengthView 子类。您只需要实现以下方法

class PasswordStrengthView: UIView {

    public func setPasswordValidator(validator: PasswordValidator) { }
    public func updateStrength(password password: String, animated: Bool = true) { }

}

自定义密码验证

为了提供自定义密码验证,您需要在 GenericPasswordRow 实例的 passwordValidator 属性中提供一个对 PasswordValidator 协议的遵循。

protocol PasswordValidator {

    var maxStrength: Double { get }
    func strengthForPassword(password: String) -> Double
    func hintForPassword(password: String) -> String?
    func isPasswordValid(password: String) -> Bool
    func colorsForStrengths() -> [Double: UIColor]

}

这个验证器应该在零和 maxStrength 值之间定义任何给定密码的强度。此外,函数 func colorsForStrengths() -> [Double: UIColor] 应该返回一个字典,指定强度值的关键点及其相关颜色。参见 DefaultPasswordValidator

作者

roadmap 中有什么内容?

可以添加到 GenericPasswordRow 的内容

  • 实现一些 Eureka Validation
  • 提供 PasswordStrengthView 的更多子类

更改日志

这可以在 CHANGELOG.md 文件中找到。