iOS 在Xib中給驗證碼Button添加邊框并實現(xiàn)驗證碼倒計時效果

最近項目里的登錄界面是用Xib拖的。項目很趕沒辦法。關(guān)于驗證碼遇到的細(xì)節(jié)上的小問題給大家分享下:

  • 給驗證碼Button加個邊框、并設(shè)置邊框顏色和寬度

  • 實現(xiàn)驗證碼倒計時操作

一、給驗證碼Button加個邊框、并設(shè)置邊框顏色和寬度

Paste_Image.png

這塊驗證碼,使用Button拖的,想要實現(xiàn)邊框效果,要實現(xiàn)下面兩部:

1、在如圖位置添加相應(yīng)屬性。這里千萬別寫錯。寫錯就會沒效果,代碼如下:

layer.borderWidth Number 1
layer.borderColorWithUIColor Color 自定義的顏色

Paste_Image.png

2、在項目中添加CALayer的Category

CALayer+LayerColor.h


//
//  CALayer+LayerColor.h
//
//  Created by TL on 2017/4/1.
//  Copyright ? 2017年 TL. All rights reserved.
//

#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>

@interface CALayer (LayerColor)

@end


CALayer+LayerColor.m


//
//  CALayer+LayerColor.m
//
//  Created by TL on 2017/4/1.
//  Copyright ? 2017年 TL. All rights reserved.
//

#import "CALayer+LayerColor.h"

@implementation CALayer (LayerColor)


- (void)setBorderColorWithUIColor:(UIColor *)color
{
    self.borderColor = color.CGColor;
}

@end



完成這些后,就可以實現(xiàn)驗證碼Button的邊框效果啦。

二、實現(xiàn)驗證碼倒計時操作


- (IBAction)getVerificationCode:(id)sender {
    
    
    __block NSInteger time = 59; //倒計時時間
    
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    
    dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒執(zhí)行
    
    dispatch_source_set_event_handler(_timer, ^{
        
        if(time <= 0){ //倒計時結(jié)束,關(guān)閉
            
            dispatch_source_cancel(_timer);
            dispatch_async(dispatch_get_main_queue(), ^{
                
                //設(shè)置按鈕的樣式
                [self.verificationBtn setTitle:@"重新獲取" forState:UIControlStateNormal];
                [self.verificationBtn setTitleColor:RGBA(188, 188, 188, 1) forState:UIControlStateNormal];//[ColorManager colorWithHexString:@"FB8557"]
                self.verificationBtn.userInteractionEnabled = YES;
            });
            
        }else{
            
            int seconds = time % 60;
            dispatch_async(dispatch_get_main_queue(), ^{
                
                //設(shè)置按鈕顯示讀秒效果
                [self.verificationBtn setTitle:[NSString stringWithFormat:@"重新獲取(%.2d)", seconds] forState:UIControlStateNormal];
                [self.verificationBtn setTitleColor:[ColorManager colorWithHexString:@"979797"] forState:UIControlStateNormal];
                self.verificationBtn.userInteractionEnabled = NO;
            });
            time--;
        }
    });
    dispatch_resume(_timer);
    
    
}

附贈colorWithHexString顏色方法的實現(xiàn):


+ (UIColor *)colorWithHexString:(NSString *)stringToConvert
{
    NSString *cString = [[stringToConvert stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
    
    
    if ([cString length] < 6)
        return DEFAULT_VOID_COLOR;
    if ([cString hasPrefix:@"#"])
        cString = [cString substringFromIndex:1];
    if ([cString length] != 6)
        return DEFAULT_VOID_COLOR;
    
    NSRange range;
    range.location = 0;
    range.length = 2;
    NSString *rString = [cString substringWithRange:range];
    
    range.location = 2;
    NSString *gString = [cString substringWithRange:range];
    
    range.location = 4;
    NSString *bString = [cString substringWithRange:range];
    
    
    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];
    
    return [UIColor colorWithRed:((float) r / 255.0f)
                           green:((float) g / 255.0f)
                            blue:((float) b / 255.0f)
                           alpha:1.0f];
}

附贈RGBA顏色方法的實現(xiàn):


//RGBA
#define RGBA(R/*紅*/, G/*綠*/, B/*藍(lán)*/, A/*透明*/)   [UIColor colorWithRed:(float)R/255.f green:(float)G/255.f blue:(float)B/255.f alpha:A]
//RGB
#define RGB(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]

這時候你的驗證碼會有 閃爍效果 ,不要怕,改變驗證碼Button的Type為Custom即可,直接上圖:

Paste_Image.png

沒有一蹴而就的天才,只有不斷點亮天賦的勤者

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,161評論 4 61
  • 你看 快看 看那肆意席卷而來 帶著怒氣的風(fēng) 拉扯著烏云姑娘的手 揚著沙塵 放縱的擊打著它 是因為覬覦枝葉的美貌嗎 ...
    嘵霞閱讀 352評論 0 1
  • 門開著,隔著門上擋蚊子的紗簾感受夾著熱浪的風(fēng)一陣陣襲來,內(nèi)心有點燥熱。還好屋子右邊有幾顆白楊樹,風(fēng)一吹沙沙作響,樹...
    娜娜在成長閱讀 1,383評論 4 105
  • 第一次對印度產(chǎn)生好奇,是因為妹尾河童老師那本堪稱經(jīng)典的《窺視印度》,這本書文字與手繪圖相映成趣,賣椰子、甘蔗汁、奶...
    淺小丁閱讀 757評論 0 1

友情鏈接更多精彩內(nèi)容