iOS随机生成验证码

来源:互联网 发布:win7网络图标是灰色的 编辑:程序博客网 时间:2024/05/16 19:22
- (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;}

0 0
原创粉丝点击