验证码(字母数字组合)

自定义 View

.h

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; min-height: 21.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c32275 }
span.s1 { color: #822e0e }
span.s2 { }
span.s3 { color: #c32275 }
span.s4 { color: #6122ae }
span.s5 { color: #000000 }

#import <UIKit/UIKit.h>

@interface PooCodeView : UIView

@property (nonatomic, retain) NSArray *changeArray;

@property (nonatomic, retain) NSMutableString *changeString;

@property (nonatomic, retain) UILabel *codeLabel;

-(void)changeCode;

@end

.m

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; min-height: 21.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c32275 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1d9421 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3d1d81 }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #6122ae }
span.s1 { color: #822e0e }
span.s2 { }
span.s3 { color: #000000 }
span.s4 { color: #c32275 }
span.s5 { color: #539aa4 }
span.s6 { color: #703daa }
span.s7 { color: #3d1d81 }
span.s8 { color: #0435ff }
span.s9 { color: #6122ae }
span.s10 { color: #294c50 }
span.s11 { color: #c91b13 }

#import "PooCodeView.h"

@implementation PooCodeView

@synthesize changeArray = _changeArray;

@synthesize changeString = _changeString;

@synthesize codeLabel = _codeLabel;

- (id)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

// Initialization code

//        self.layer.cornerRadius = 5.0;

//        self.layer.masksToBounds = YES;

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.backgroundColor = color;

[self change];

}

return self;

}

//-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

//{

//    [self change];

//    [self setNeedsDisplay];

//}

-(void)changeCode{

[self change];

[self setNeedsDisplay];

}

- (void)change

{

self.changeArray = [[NSArray alloc] initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",@"i",@"j",@"k",@"l",@"m",@"n",@"o",@"p",@"q",@"r",@"s",@"t",@"u",@"v",@"w",@"x",@"y",@"z",nil];

NSMutableString *getStr = [[NSMutableString alloc] initWithCapacity:5];

self.changeString = [[NSMutableString alloc] initWithCapacity:6];

for(NSInteger i = 0; i < 4; i++)

{

NSInteger index = arc4random() % ([self.changeArray count] - 1);

getStr = [self.changeArray objectAtIndex:index];

self.changeString = (NSMutableString *)[self.changeString stringByAppendingString:getStr];

}

}

- (void)drawRect:(CGRect)rect {

[super drawRect:rect];

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.5];

[self setBackgroundColor:color];

NSString *text = [NSString stringWithFormat:@"%@",self.changeString];

CGSize cSize = [@"S" sizeWithFont:[UIFont systemFontOfSize:20]];

int width = rect.size.width / text.length - cSize.width;

int height = rect.size.height - cSize.height;

CGPoint point;

float pX, pY;

for (int i = 0; i < text.length; i++)

{

pX = arc4random() % width + rect.size.width / text.length * i;

pY = arc4random() % height;

point = CGPointMake(pX, pY);

unichar c = [text characterAtIndex:i];

NSString *textC = [NSString stringWithFormat:@"%C", c];

[textC drawAtPoint:point withFont:[UIFont systemFontOfSize:20]];

}

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetLineWidth(context, 1.0);

for(int cout = 0; cout < 10; cout++)

{

red = arc4random() % 100 / 100.0;

green = arc4random() % 100 / 100.0;

blue = arc4random() % 100 / 100.0;

color = [UIColor colorWithRed:red green:green blue:blue alpha:0.2];

CGContextSetStrokeColorWithColor(context, [color CGColor]);

pX = arc4random() % (int)rect.size.width;

pY = arc4random() % (int)rect.size.height;

CGContextMoveToPoint(context, pX, pY);

pX = arc4random() % (int)rect.size.width;

pY = arc4random() % (int)rect.size.height;

CGContextAddLineToPoint(context, pX, pY);

CGContextStrokePath(context);

}

}

@end

时间: 11-22

验证码(字母数字组合)的相关文章

JS生成随机的由字母数字组合的字符串

前言 最近有个需求,是需要生成3-32位长度的字母数字组合的随机字符串,另一个是生成43位随机字符串. 方法一 奇妙的写法 1 Math.random().toString(36).substr(2); 输出结果 解释 很有意思,研究了一下,基本上toString后的参数规定可以是2-36之间的任意整数,不写的话默认是10(也就是十进制),此时返回的值就是那个随机数. 若是偶数,返回的数值字符串都是短的,若是奇数,则返回的将是一个很大长度的表示值. 若<10 则都是数字组成,>10 才会包含字

工具类:获得随机字母和数字的组合(字母+数字组合,字母组合,数字组合)

package util; import java.util.Random; /** * * @author jkfeng * 获得随机字母和数字的组合(字母+数字组合,字母组合,数字组合) * */ public class RandomCharOrNumUtil { public static void main(String[] args) { System.out.println(getCharAndNum(6)); System.out.println(getChar(6)); Sys

JAVAWEB项目实现验证码中文、英文、数字组合

验证码基础 一.什么是验证码及它的作用 :验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意破解密码.刷票.论坛灌水.有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录. 二.图文验证码的原理 :在servlet中随机生成一个指定位置的验证码,一般为四位,然后把该验证码保存到session中.在通过Java的绘图类以图片的形式输出该验证码.为了增加验证码的安全级别,可

tyvj1096 数字组合

描述 在N个数中找出其和为M的若干个数.先读入正整数N(1<N<100)和M(1<M<10000), 再读入N个正数(可以有相同的数字,每个数字均在1000以内), 在这N个数中找出若干个数, 使它们的和是M, 把满足条件的数字组合都找出来以统计组合的个数,输出组合的个数(不考虑组合是否相同).要求你的程序运行时间不超过1秒. 输入格式 第一行是两个数字,表示N和M.第二行起是N个数. 输出格式 就一个数字,表示和为M的组合的个数. 测试样例1 输入 4 4 1 1 2 2 输出

CSS解决无空格太长的字母,数字不会自动换行的问题

其实很简单,代码如下所示,注意 Style: <div class="detail_title" style="word-break: break-all;"><%=StringUtil.toHTML(title) %></div> 默认情况下,一个 DIV或者其他元素的文本,如果都是无文字分隔符,无空格,则不会自动换行,比如: <div class="detail_title" style="

python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

操作环境:python3 在上一文中python爬虫scrapy框架--人工识别登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前的文章便于理解 本文将介绍如何用scrapy来登录知乎. 不多说,直接上代码: import scrapy import re import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhi

华为上机测试题(Excel表格纵列字母数字转换-java)

PS:这是我刚做的一道题,题目不难,满分60,得分40,大家看看哪里有问题,欢迎提意见,感谢! /* * 题目:Excel表格纵列字母数字转换 * 描述: 在Excel中列的编号为A-Z,AA-AZ,BA-BZ.....CZB.....,请实现一个函数要求满足以下功能,将编号进行修改, * 如A-Z为1-26,然后翻转为两位,AA为27,AB为28.....ZZ为702,然后翻转为3位,AAA=703,AAB=704... 输入的字符串最长只有4. 题目类别: 字符串 难度: 初级 分数: 60

背包问题 codevs2210 数字组合

数字组合 题目描述 Description 在N个数中找出其和为M的若干个数.先读入正整数N和M, 再读入N个正数(可以有相同的数字,每个数字均在1000以内), 在这N个数中找出若干个数, 使它们的和是M, 把满足条件的数字组合都找出来以统计组合的个数,输出组合的个数(不考虑组合是否相同).要求你的程序运行时间不超过1秒. 输入描述 Input Description 第一行是两个数字,表示N和M.第二行起是N个数. 输出描述 Output Description 就一个数字,表示和为M的组合

Java生成随机数(n位长度,字母+数字)

1 package demo; 2 import java.util.Random; 3 4 /** 5 * 生成字母+数字的随机数 6 * @author sy 7 * 8 */ 9 public class Demo{ 10 11 public static void main(String[] args){ 12 System.out.println(getStringRandom(6)); 13 } 14 15 public static String getStringRandom(i

#DP# ----- 数字组合

OpenJudge 2985:数字组合 总时间限制:1000ms  内存限制: 65536kB 描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如:n=5,5个数分别为1,2,3,4,5,t=5:那么可能的组合有5=1+4和5=2+3和5=5三种组合方式. 输入 输入的第一行是两个正整数n和t,用空格隔开,其中1<=n<=20,表示正整数的个数,t为要求的和(1<=t<=1000)接下来的一行是n个正整数,用空格隔开. 输出 和为t的不同的组合方式的数目. 样例