全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

iOS 生成图片验证码(实用功能)

1.数据源

codeArray = ["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"]

2.随机生成验证码

for index in 0..<4 {
      let i = (Int)(arc4random()) % (codeArray.count-1)
      let str = codeArray[i]
      if index == 0 {
        codeStr = str as NSString
      }else {
        codeStr = "\(codeStr)\(str)" as NSString
      }
    }

3.创建放置验证码的label

for i in 0..<codeStr.length {
      let pxx = arc4random() % UInt32(randWidth)
      let px = CGFloat(pxx) + CGFloat(i)*(self.frame.size.width-3)/CGFloat(codeStr.length)
      let py = arc4random() % UInt32(randHeight)
      let label = UILabel.init(frame: CGRect.init(x: px + 3, y: CGFloat(py), width: textSize.width, height: textSize.height))
      label.text = String.init(format: "%C", codeStr.character(at: i))
      label.font = UIFont.systemFont(ofSize: 20)
      if (isRotation == true) {
        let a = arc4random() % UInt32(60)
        let r = Double(a)-30
        label.transform = CGAffineTransform.init(rotationAngle: CGFloat(r*M_PI)/180)
      }
      bgView.addSubview(label)
    }

4.底部view是随便画几条细线

for _ in 0...9 {
      let path = UIBezierPath.init()
      let pX = arc4random() % UInt32(self.frame.width)
      let pY = arc4random() % UInt32(self.frame.height)
      path.move(to: CGPoint.init(x: CGFloat(pX), y: CGFloat(pY)))
      let ptX = arc4random() % UInt32(self.frame.width)
      let ptY = arc4random() % UInt32(self.frame.height)
      path.addLine(to: CGPoint.init(x: CGFloat(ptX), y: CGFloat(ptY)))
      let layer = CAShapeLayer.init()
      layer.strokeColor = UIColor.getRandomColor(withAlpha: 0.2).cgColor//layer的边框色
      layer.lineWidth = 1.0
      layer.strokeEnd = 1
      layer.fillColor = UIColor.clear.cgColor
      layer.path = path.cgPath
      bgView.layer.addSublayer(layer)
    }

5.调用方法及回调

public func refreshCode(callBack: @escaping (_ str: NSString) -> ()) {
    initCodeView()
    callBack(codeStr)
  }

6.效果图

7.源码地址

以上所述是小编给大家介绍的iOS 生成图片验证码(实用功能),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# ios  # 生成图片验证码  # 验证码  # iOS开发实现随机图片验证码封装  # iOS 生成图片验证码绘制实例代码  # 利用iOS绘制图片生成随机验证码示例代码  # IOS实现验证码倒计时功能(一)  # iOS获取短信验证码倒计时的两种实现方法  # iOS本地动态生成验证码的方法  # IOS实现验证码倒计时功能(二)  # iOS生成图片数字字母验证效果  # 小编  # 在此  # 给大家  # 几条  # 所述  # 回调  # 给我留言  # 感谢大家  # 实用功能  # 疑问请  # 有任何  # 细线  # textSize  # CGRect  # text  # height  # width  # size  # frame 


相关文章: 建站之星×万网:智能建站系统+自助建站平台一键生成  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  建站之星安装路径如何正确选择及配置?  深圳网站制作平台,深圳市做网站好的公司有哪些?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  建站之星安装后如何配置SEO及设计样式?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何在橙子建站中快速调整背景颜色?  Java解压缩zip - 解压缩多个文件或文件夹实例  如何快速配置高效服务器建站软件?  浅析上传头像示例及其注意事项  c# 在高并发场景下,委托和接口调用的性能对比  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  开心动漫网站制作软件下载,十分开心动画为何停播?  C#如何序列化对象为XML XmlSerializer用法  测试制作网站有哪些,测试性取向的权威测试或者网站?  如何配置WinSCP新建站点的密钥验证步骤?  C#如何在一个XML文件中查找并替换文本内容  如何通过VPS搭建网站快速盈利?  建站主机选虚拟主机还是云服务器更好?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  建站主机默认首页配置指南:核心功能与访问路径优化  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  魔方云NAT建站如何实现端口转发?  教程网站设计制作软件,怎么创建自己的一个网站?  营销式网站制作方案,销售哪个网站招聘效果最好?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在Windows服务器上快速搭建网站?  如何选择美橙互联多站合一建站方案?  定制建站流程解析:需求评估与SEO优化功能开发指南  建站主机选哪种环境更利于SEO优化?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  建站VPS推荐:2025年高性能服务器配置指南  如何批量查询域名的建站时间记录?  如何高效完成自助建站业务培训?  焦点电影公司作品,电影焦点结局是什么?  如何自定义建站之星网站的导航菜单样式?  如何通过.red域名打造高辨识度品牌网站?  如何高效配置香港服务器实现快速建站?  电商平台网站制作流程,电商网站如何制作?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  建站之星Pro快速搭建教程:模板选择与功能配置指南  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  建站之星会员如何解锁更多建站功能?  零服务器AI建站解决方案:快速部署与云端平台低成本实践 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。