- (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; }