Objective-c 图片验证码

来源:互联网 发布:帝国时代2日本武士数据 编辑:程序博客网 时间:2024/05/22 07:40
- (void)onTapToGenerateCode:(UITapGestureRecognizer *)tap {    MPLog(@"验证码刷新");        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
原创粉丝点击