GenericPasswordRow
由 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或者需要帮助,请在提交问题之前先检查旧的 FAQ 和 StackOverflow (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
定制
对于基本样式,如字体、颜色、边距、分隔符,您应使用 cellSetup
和 cellUpdate
。否则,您应该能够提供完全不同的设计(不同的 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?
:
用于切换textField
的secureTextEntry
属性的可见性按钮。@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 文件,还可以提供不同于 DefaultPasswordStrengthView 的 PasswordStrengthView
子类。您只需要实现以下方法
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 文件中找到。