swift4.0 项目中的随机校验码(验证码)
来源:互联网 发布:传销组织 知乎 编辑:程序博客网 时间:2024/06/05 20:10
在开发中注册的时候移动端要求我们获取随机校码
完整代码
class CodeView: UIView { var changeString:String? //验证码的字符串 let kLineCount = 6 let kLineWidth = CGFloat(2.0) let kCharCount = 4 let kFontSize = UIFont.systemFont(ofSize:(CGFloat(arc4random() % 5) + 18)) override init(frame: CGRect) { super.init(frame: frame) let randomColor:UIColor = UIColor(red: CGFloat(CGFloat(arc4random())/CGFloat(RAND_MAX)), green: CGFloat(CGFloat(arc4random())/CGFloat(RAND_MAX)), blue: CGFloat(CGFloat(arc4random())/CGFloat(RAND_MAX)), alpha: 0.5)// self.layer.cornerRadius = 5.0 //设置layer圆角半径// self.layer.masksToBounds = true //隐藏边界 self.backgroundColor = randomColor getChangeCode() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func getChangeCode() { //字符素材数组 let changeArray:NSArray = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"] changeString = "" //随机从数组中选取需要个数的字符,然后拼接为一个字符串 for _ in 0 ..< kCharCount { let index = Int(arc4random())%(changeArray.count - 1) let getStr = changeArray.object(at: index) changeString = changeString! + (getStr as! String) } } //触摸 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { super.touchesBegan(touches, with: event) getChangeCode() setNeedsDisplay() } //画图 override func draw(_ rect: CGRect) { super.draw(rect) let randomBackColor = UIColor(red: CGFloat(CGFloat(arc4random())/CGFloat(RAND_MAX)), green: CGFloat(CGFloat(arc4random())/CGFloat(RAND_MAX)), blue: CGFloat(CGFloat(arc4random())/CGFloat(RAND_MAX)), alpha: 1.0) self.backgroundColor = randomBackColor //获得要显示验证码字符串,根据长度,计算每个字符显示的大概位置 let str = NSString(string: "S") // let font = UIFont.systemFontOfSize(20) let size = str.size(withAttributes: ([NSAttributedStringKey.font : kFontSize])) let width:CGFloat = rect.size.width / CGFloat(NSString(string: changeString!).length) - size.width let height = rect.size.height - size.height var point:CGPoint? var pX:CGFloat? var pY:CGFloat? let stringCount:Int = (changeString?.characters.count)! for i in 0 ..< stringCount { pX = CGFloat(arc4random()).truncatingRemainder(dividingBy: width) + rect.size.width / CGFloat(NSString(string: changeString!).length)*CGFloat(i) pY = CGFloat(arc4random()).truncatingRemainder(dividingBy: height) point = CGPoint(x:pX!, y:pY!) let c = NSString(string: changeString!).character(at: i) let codeText:NSString? = NSString(format: "%C",c) codeText!.draw(at: point!, withAttributes: [NSAttributedStringKey.font : kFontSize]) } //调用drawRect:之前,系统会向栈中压入一个CGContextRef,调用UIGraphicsGetCurrentContext()会取栈顶的CGContextRef let context :CGContext = UIGraphicsGetCurrentContext()! //设置画线宽度 context.setLineWidth(kLineWidth) for _ in 0 ..< kLineCount { //绘制干扰的彩色直线 let randomLineColor = UIColor(red: CGFloat(CGFloat(arc4random())/CGFloat(RAND_MAX)), green: CGFloat(CGFloat(arc4random())/CGFloat(RAND_MAX)), blue: CGFloat(CGFloat(arc4random())/CGFloat(RAND_MAX)), alpha: 0.5) context.setStrokeColor(randomLineColor.cgColor) //设置线的起点 pX = CGFloat(arc4random()).truncatingRemainder(dividingBy: rect.size.width) pY = CGFloat(arc4random()).truncatingRemainder(dividingBy: rect.size.height) context.move(to: CGPoint(x:pX!, y:pY!)) //设置线终点 pX = CGFloat(arc4random()).truncatingRemainder(dividingBy: rect.size.width) pY = CGFloat(arc4random()).truncatingRemainder(dividingBy: rect.size.height) context.addLine(to: CGPoint(x:pX!, y:pY!)) //画线 context.strokePath() } } /* // Only override draw() if you perform custom drawing. // An empty implementation adversely affects performance during animation. override func draw(_ rect: CGRect) { // Drawing code } */}
阅读全文
1 0
- swift4.0 项目中的随机校验码(验证码)
- 随机生成校验码
- 项目中的算法(1)--验证码
- Swift4.0闭包 (重要)
- 随机生成六位校验码
- java验证码中的数字、字母、汉字如何随机生成
- JS 生成随机色,产生验证码,获取URL中的"?"
- java验证码中的数字、字母、汉字如何随机生成
- ava验证码中的数字、字母、汉字如何随机生成
- 产生随机验证码(asp.net)
- 随机生成验证码(带计时器)
- 自定义view(一)--随机验证码
- java生成随机验证码(ASCII)
- 随机验证码
- 生成随机验证码
- java随机验证码
- 随机生成验证码
- 生成随机验证码
- TexturePacker序列号申请
- 9、Selenium + Python 实现 UI 自动化测试-操作浏览器窗口
- Spring事务管理(转载自佚名大神)
- 手机红灯闪烁,但是无法开机
- servlet的四种响应
- swift4.0 项目中的随机校验码(验证码)
- 由于“内部错误
- opencv3+Zbar识别二维码--梯度运算
- 【linux tree】linux下tree的用法
- 12款炫酷实用的HTML5带发光动画
- Java中数组的详细介绍
- Nginx 安装(CentOS )
- Google Play服务中的人脸检测
- C++11 并发指南三(Lock 详解)