全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站之星微信建站一键生成小程序+多端营销系统  如何快速搭建高效简练网站?  建站主机类型有哪些?如何正确选型  制作宣传网站的软件,小红书可以宣传网站吗?  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  西安大型网站制作公司,西安招聘网站最好的是哪个?  定制建站流程解析:需求评估与SEO优化功能开发指南  如何高效利用200m空间完成建站?  nginx修改上传文件大小限制的方法  如何在腾讯云免费申请建站?  如何快速搭建虚拟主机网站?新手必看指南  个人网站制作流程图片大全,个人网站如何注销?  自助网站制作软件,个人如何自助建网站?  宝塔面板如何快速创建新站点?  利用JavaScript实现拖拽改变元素大小  建站主机选购指南与交易推荐:核心配置解析  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  大连 网站制作,大连天途有线官网?  如何快速完成中国万网建站详细流程?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  设计网站制作公司有哪些,制作网页教程?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  贸易公司网站制作流程,出口贸易网站设计怎么做?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  如何在IIS7中新建站点?详细步骤解析  平台云上自主建站:模板化设计与智能工具打造高效网站  如何通过免费商城建站系统源码自定义网站主题与功能?  如何选择建站程序?包含哪些必备功能与类型?  高防服务器租用首荐平台,企业级优惠套餐快速部署  如何在Windows环境下新建FTP站点并设置权限?  c++ stringstream用法详解_c++字符串与数字转换利器  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  网站制作网站,深圳做网站哪家比较好?  Python多线程使用规范_线程安全解析【教程】  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  C++如何使用std::optional?(处理可选值)  建站主机选购指南:核心配置与性价比推荐解析  济南网站建设制作公司,室内设计网站一般都有哪些功能?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何在景安云服务器上绑定域名并配置虚拟主机?  如何快速搭建高效WAP手机网站吸引移动用户?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  建站为何优先选择香港服务器?  宝塔建站无法访问?如何排查配置与端口问题? 

您的项目需求

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