- (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随机生成验证码
最新推荐文章于 2018-10-04 16:58:13 发布