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

 更新时间:2017年03月06日 15:38:38   作者:Three_Zhang  
这篇文章主要介绍了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实现步骤进度条功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • 解决iOS下无法触发focus事件的问题

    解决iOS下无法触发focus事件的问题

    今天小编就为大家分享一篇解决iOS下无法触发focus事件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • iOS利用AVPlayer播放网络音乐的方法教程

    iOS利用AVPlayer播放网络音乐的方法教程

    最近工作中遇到了一个需求,需要做一个在线音乐类的APP,通过一段时间的努力实现了,所以这篇文章主要给大家介绍了关于iOS利用AVPlayer播放网络音乐的方法教程,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • iOS中searchBar(搜索框)光标初始位置后移

    iOS中searchBar(搜索框)光标初始位置后移

    这篇文章主要介绍了iOS中searchBar(搜索框)光标初始位置后移的关键代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • iOS左滑手势失效的解决方法

    iOS左滑手势失效的解决方法

    这篇文章主要为大家详细介绍了iOS左滑手势失效的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • iOS视频编辑之添加音轨的方法

    iOS视频编辑之添加音轨的方法

    本篇文章主要介绍了iOS视频编辑之添加音轨的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • IOS 静态库打包流程简化详细介绍

    IOS 静态库打包流程简化详细介绍

    这篇文章主要介绍了IOS 静态库打包流程简化详细介绍的相关资料,开发好的静态库后需要手动的合并.a文件,然后再拷贝相关的头文件,接着把静态库和头文件放在同一个文件里面打包发送给SDK的使用者,这里简化下流程,需要的朋友可以参考下
    2016-12-12
  • 一行iOS代码实现图片无限轮播器

    一行iOS代码实现图片无限轮播器

    一行iOS代码实现图片无限轮播器的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • IOS 基础之nil,NULL,NSNULL区别详解

    IOS 基础之nil,NULL,NSNULL区别详解

    这篇文章主要介绍了IOS 基础之nil,NULL,NSNULL区别详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • IOS实现图片轮播无限循环效果

    IOS实现图片轮播无限循环效果

    这篇文章主要为大家详细介绍了IOS实现图片轮播无限循环效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03

最新评论