PSMeter 0.1.5

PSMeter 0.1.5

OmarAhmed TarekAhmed Tarek 维护。



 
依赖
Navajo-Swift>= 0
GTProgressBar>= 0
 

PSMeter 0.1.5

  • 作者
  • Baianat

PSMeter

面向 iOS 的密码强度计。

Version License Platform

快速开始

自定义

代理(回调)

密码强度算法

安装

快速开始

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-SwiftGTProgressBar,它们将在您的Pods中自动安装。

许可证

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