开发者社区> hybcoder> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

iOS随机生成验证码

简介:
+关注继续查看
- (void)onTapToGenerateCode:(UITapGestureRecognizer *)tap {
  for (UIView *view in self.checkCodeNumberLabel.subviews) {
    [view removeFromSuperview];
  }
  // @{
  // @name 生成背景色
  float red = arc4random() % 100 / 100.0;
  float green = arc4random() % 100 / 100.0;
  float blue = arc4random() % 100 / 100.0;
  UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:0.2];
  [self.checkCodeNumberLabel setBackgroundColor:color];
  // @} end 生成背景色
  
  // @{
  // @name 生成文字
  const int count = 5;
  char data[count];
  for (int x = 0; x < count; x++) {
    int j = '0' + (arc4random_uniform(75));
    if((j >= 58 && j <= 64) || (j >= 91 && j <= 96)){
      --x;
    }else{
      data[x] = (char)j;
    }
  }
  NSString *text = [[NSString alloc] initWithBytes:data
                                            length:count encoding:NSUTF8StringEncoding];
  self.code = text;
  // @} end 生成文字
  
  CGSize cSize = [@"S" sizeWithFont:[UIFont systemFontOfSize:16]];
  int width = self.checkCodeNumberLabel.frame.size.width / text.length - cSize.width;
  int height = self.checkCodeNumberLabel.frame.size.height - cSize.height;
  CGPoint point;
  float pX, pY;
  for (int i = 0, count = text.length; i < count; i++) {
    pX = arc4random() % width + self.checkCodeNumberLabel.frame.size.width / text.length * i - 1;
    pY = arc4random() % height;
    point = CGPointMake(pX, pY);
    unichar c = [text characterAtIndex:i];
    UILabel *tempLabel = [[UILabel alloc]
                          initWithFrame:CGRectMake(pX, pY,
                                                   self.checkCodeNumberLabel.frame.size.width / 4,
                                                   self.checkCodeNumberLabel.frame.size.height)];
    tempLabel.backgroundColor = [UIColor clearColor];
    
    // 字体颜色
    float red = arc4random() % 100 / 100.0;
    float green = arc4random() % 100 / 100.0;
    float blue = arc4random() % 100 / 100.0;
    UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];

    NSString *textC = [NSString stringWithFormat:@"%C", c];
    tempLabel.textColor = color;
    tempLabel.text = textC;
    [self.checkCodeNumberLabel addSubview:tempLabel];
  }
  
  // 干扰线
  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextSetLineWidth(context, 1.0);
  for(int i = 0; i < count; i++) {
    red = arc4random() % 100 / 100.0;
    green = arc4random() % 100 / 100.0;
    blue = arc4random() % 100 / 100.0;
    color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
    CGContextSetStrokeColorWithColor(context, [color CGColor]);
    pX = arc4random() % (int)self.checkCodeNumberLabel.frame.size.width;
    pY = arc4random() % (int)self.checkCodeNumberLabel.frame.size.height;
    CGContextMoveToPoint(context, pX, pY);
    pX = arc4random() % (int)self.checkCodeNumberLabel.frame.size.width;
    pY = arc4random() % (int)self.checkCodeNumberLabel.frame.size.height;
    CGContextAddLineToPoint(context, pX, pY);
    CGContextStrokePath(context);
  }
  return;
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS开发那些事--简单表视图
<p>表视图是iOS开发中使用最频繁的视图,我们一般都会选择以表的形式来展现数据,比如通讯录、频道列表等。表视图分段、分组、索引等功能使我们所展示的数据看起来更规整更有调理,更令人兴奋的是表视图还可以利用细节展示等功能多层次的展示数据,正所谓一表胜千言。 不过,相较于其它控件表视图的使用比较复杂,但是对比于表视图各种灵活多变的功能,我们在使用上花费的努力还是相当值得的。</p> <p><
794 0
iOS逆向 06:RSA加密(上)
iOS逆向 06:RSA加密(上)
0 0
iOS逆向 06:RSA加密(下)
iOS逆向 06:RSA加密(下)
0 0
iOS随机数的生成
iOS随机数的生成
0 0
IOS自动获取短信验证码
小编这里有个自己的学习交流群681+503+716(验证编号:大鲨) * 1.自定义监听类* /** * 短信**,用于自动填充验证码 */ public class SMSContentObserver ex...
2209 0
iOS 关于指纹验证LocalAuthentication
IMG_0152.PNG 最近做项目版本更新有个需求是 3DTouch解锁功能, 由此原因接触 Apple的指纹解锁功能, 基本功能原先已经实现好了,发现了一个 Bug然后来优化一下,先扯会儿等下我会附上源代码, 其实在指纹解锁功能上 Apple已经帮我们封装好了, 我们需要写的代码其实并不多。
1012 0
+关注
hybcoder
运营小帮手新闻推广软文发布推广平台,官网:https://www.yunyingxbs.com
文章
问答
文章排行榜
最热
最新
相关电子书
更多
移动 App 性能监测实践(iOS篇)
立即下载
移动App性能监测实践(ios篇)
立即下载
手淘IOS性能优化探索
立即下载