iOS 随机验证码(无干扰线)

1、在.h文件中定义两个属性:

//  属性声明
@property(nonatomic,retain)UILabel *checkCodeNumberLabel;// 显示验证码Label
@property(nonatomic,copy)NSString *code;// 随机获得的验证码

2、在.m 文件宏定义验证码的宽和高:

#define SW self.checkCodeNumberLabel.frame.size.width
#define SH self.checkCodeNumberLabel.frame.size.height

3、在viewDidLoad 中设置self.view 的背景颜色、设置显示验证码的位置。这里添加点击手势,你可以添加按钮来触发生成验证码的方法

//  初始化 视图
- (void)creatViewss
{
self.view.backgroundColor = [UIColor colorWithRed:0.287green:0.778blue:0.832alpha:1.000];
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:selfaction:@selector(produceCode:)];
    self.checkCodeNumberLabel = [[UILabel alloc]initWithFrame:CGRectMake(50,200,100,30)];
    [self.viewaddSubview:self.checkCodeNumberLabel];
    [self.viewaddGestureRecognizer:tap];
}


4、点击任意地方触发生成验证码方法

- (void)produceCode:(UITapGestureRecognizer*)tap
{
    for(UIView*viewinself.checkCodeNumberLabel.subviews)
    {
        [view removeFromSuperview];
    }
    //  生成背景颜色
    float red = arc4random()%100/100.0;
    float green = arc4random()%100/100.0;
    float blue = arc4random()%100/100.0;
    UIColor*color = [UIColor colorWithRed:redgreen:greenblue:bluealpha:0.3];
    [self.checkCodeNumberLabel setBackgroundColor:color];
    //  生成文字
    constintcount =6;// 修改这里可以选择自己想要得验证码位数
    chardata[count];
    for (inti = 0;i < count; i ++)
    {
        int j = '0' + (arc4random_uniform(75));
        if ((j >= 58 &&j <= 64)||(j >= 91 &&j <= 96))
        {
            --i;
        }
        else
        {
            data[i] = (char)j;
        }
    }
    NSString*text = [[NSString alloc]initWithBytes:datalength:countencoding:NSUTF8StringEncoding];
#pragmamark--------获得字符self.code随机验证码--------------
    NSLog(@"-----------------------------------------");
    self.code =text;
    NSLog(@"code:%@",self.code);
#pragmamark--------获得字符的尺寸--------------
    CGSizecSize =CGSizeFromString(@"B");
    int width = SW/text.length-cSize.width*text.length-10;
    int height = SH-cSize.height*text.length;
    //   intheight =SH+cSize.height*text.length;
    CGPointpoint;
    floatpX,pY;
    for (inta =0,count = (int)text.length;a < count;a ++)
    {
        pX =arc4random()%width+SW/text.length*a-1;
        pY =arc4random()%height;
        point =CGPointMake(pX,pY);
        UILabel*tempLabel = [[UILabel alloc]initWithFrame:CGRectMake(pX,0,SW/4,SH)];
        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:redgreen:greenblue:bluealpha:1.0];
        NSString*textC = [NSStringstringWithFormat:@"%c",data[a]];
        tempLabel.textColor =color;
        tempLabel.text =textC ;
        [self.checkCodeNumberLabel addSubview:tempLabel];
    }
}


5、到这里验证码的方法就OK了,需要多少为的验证码把 count 的值修改一下就可以了。

效果如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

启程Boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值