PSMeter
面向 iOS 的密码强度计。
快速开始
1- 从对象库中将视图对象拖放到您的 storyboard 中。
2- 在身份检查器中设置视图的类为 PSMeter
。将其模块属性设置为 PSMeter
。
3- 将 import PSMeter
添加到视图控制器的头部。
4- 在相应的视图控制器中创建一个出口。
@IBOutlet weak var psMeter: PSMeter!
5- 在 PSMeter 实例上调用 updateStrengthIndication(password:String)
以更新密码强度指示器。
注意
updateStrengthIndication(password:String)
应在密码文本更改时调用,以适当地更新指示器。
这可以通过几种简单的方式实现。
- 使用 RxSwift ...
passwordTextField.rx.text.changed.subscribe(onNext: { (password) in
self.psMeter.updateStrengthIndication(password: password ?? "")
}).disposed(by: bag)
- 使用 IBActions ...
1- 在您的视图控制器中创建一个用于 Editing Changed
的 @IBAction
。
2- 在该操作中调用 updateStrengthIndication
。
@IBAction func passwordDidChange(_ sender: Any) {
let password = passwordTextField.text ?? ""
psMeter.updateStrengthIndication(password: password)
}
自定义
查看自定义
您可以对这些属性自定义 PSMeter
属性 | 定义 | 默认值 |
---|---|---|
titleText | 跨强度值标题 | "密码强度" |
titleTextColor | 标题文本颜色 | .black |
font | 标题和强度标签的字体 | .systemFont(ofSize: 14) |
barBackgroundColor | 强度条的背景颜色 | .clear |
示例
override func viewDidLoad() {
...
psMeter.titleText = "Password Robustness"
psMeter.tintColor = .red
psMeter.font = UIFont.boldSystemFont(ofSize: 14)
}
状态自定义
您还可以自定义每个6个强度状态下的 文本、文本颜色、进度颜色。
这些属性使用 StateDecorator
对象定义,如下所示...
let weakPasswordDecorator = StateDecorator(text: "Weak", textColor: .red, progressColor: .red)
要自定义所有状态,只需设置六个不同状态的六个装饰器(空、非常弱、弱、良好、强、非常强)。
这可以通过使用包含所有装饰器的 PStrengthViewStatesDecorator
对象轻松实现。
示例:默认的 PStrengthViewStatesDecorator
实现如下...
let defaultStatesDecorator = PStrengthViewStatesDecorator(
emptyPasswordDecorator:StateDecorator(text: "--", textColor: .gray, progressColor: .gray),
veryWeakPasswordDecorator: StateDecorator(text: "Very Weak", textColor: .red, progressColor: .red),
weakPasswordDecorator: StateDecorator(text: "Weak", textColor: .orange, progressColor: .orange),
fairPasswordDecorator: StateDecorator(text: "Fair", textColor: .yellow, progressColor: .yellow),
strongPasswordDecorator: StateDecorator(text: "Strong", textColor: .green, progressColor: .green),
veryStrongPasswordDecorator: StateDecorator(text: "Very Strong", textColor: .blue, progressColor: .blue)
)
psMeter.statesDecorator = defaultStatesDecorator
委托(回调)
您可以在密码强度变化时进行观察,只需在 PSMeter
上设置委托,并按以下方式实现 PsMeterDelegate
...
...
override func viewDidLoad() {
super.viewDidLoad()
...
psMeter.delegate = self
}
}
extension ViewController : PSMeterDelegate {
func psMeter(_ psMeter: PSMeter, didChangeStrength passwordStrength: PasswordStrength) {
}
}
或者,您可以使用 PSMeter
上的 passwordStrength
来获取当前密码强度,如下所示...
let currentStrength = psMeter.passwordStrength
不管哪种方式,passwordStrength 是 PasswordStrength
枚举类型,可以有以下值之一...
let currentStrength = psMeter.passwordStrength
switch currentStrength {
case .empty:
print("empty")
case .veryWeak:
print("veryWeak")
case .weak:
print("weak")
case .fair:
print("fair")
case .strong:
print("strong")
case .veryStrong:
print("veryStrong")
default:
break
}
密码强度算法
默认算法
确定密码强度的默认算法是基于@jasonnam的Navajo-Swift。
自定义算法
您可以通过在PSMeter上设置passwordEstimator
,并按照以下方式实现PasswordEstimator
来自定义密码强度估计算法...
示例:可以将以下自定义算法定义为长度小于8个字符的密码判定为弱密码,否则为适当强...
...
override func viewDidLoad() {
...
psMeter.passwordEstimator = self
}
}
extension ViewController : PasswordEstimator {
func estimatePassword(_ password: String) -> PasswordStrength {
if password.count = 8 {
return .weak
}else {
return .fair
}
}
}
安装
要安装PSMeter,只需将以下行添加到您的Podfile中
pod 'PSMeter'
依赖项
PSMeter在其底层使用了Navajo-Swift和GTProgressBar,它们将在您的Pods中自动安装。
许可证
PSMeter在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。