最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift實(shí)現(xiàn)iOS應(yīng)用中短信驗(yàn)證碼倒計(jì)時(shí)功能的實(shí)例分享

 更新時(shí)間:2016年04月18日 14:52:41   作者:老初  
這篇文章主要介紹了Swift實(shí)現(xiàn)iOS應(yīng)用中短信驗(yàn)證碼倒計(jì)時(shí)功能的實(shí)例分享,開啟和關(guān)閉倒計(jì)時(shí)功能的步驟實(shí)現(xiàn)比較關(guān)鍵,需要的朋友可以參考下

在開始之前,我們先來了解一個(gè)概念 屬性觀測(cè)器(Property Observers):

屬性觀察器監(jiān)控和響應(yīng)屬性值的變化,每次屬性被設(shè)置值的時(shí)候都會(huì)調(diào)用屬性觀察器,甚至新的值和現(xiàn)在的值相同的時(shí)候也不例外。

可以為屬性添加如下的一個(gè)或全部觀察器:

  • willSet在新的值被設(shè)置之前調(diào)用
  • didSet在新的值被設(shè)置之后立即調(diào)用

接下來開始我們的教程,先展示一下最終效果:

2016418144945893.gif (372×180)

首先聲明一個(gè)發(fā)送按鈕:

復(fù)制代碼 代碼如下:

var sendButton: UIButton!

在viewDidLoad方法中給發(fā)送按鈕添加屬性:
復(fù)制代碼 代碼如下:

override func viewDidLoad() {
    super.viewDidLoad()

    sendButton = UIButton()
    sendButton.frame = CGRect(x: 40, y: 100, width: view.bounds.width - 80, height: 40)
    sendButton.backgroundColor = UIColor.redColor()
    sendButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
    sendButton.setTitle("獲取驗(yàn)證碼", forState: .Normal)
    sendButton.addTarget(self, action: "sendButtonClick:", forControlEvents: .TouchUpInside)

    self.view.addSubview(sendButton)
}


接下來聲明一個(gè)變量remainingSeconds代表當(dāng)前倒計(jì)時(shí)剩余的秒數(shù):
復(fù)制代碼 代碼如下:

var remainingSeconds = 0

我們給remainingSeconds添加一個(gè)willSet方法,這個(gè)方法會(huì)在remainingSeconds的值將要變化的時(shí)候調(diào)用,并把值傳遞給參數(shù)newValue:
復(fù)制代碼 代碼如下:

var remainingSeconds: Int = 0 {
    willSet {
        sendButton.setTitle("驗(yàn)證碼已發(fā)送(\(newValue)秒后重新獲取)", forState: .Normal)

        if newValue <= 0 {
            sendButton.setTitle("重新獲取驗(yàn)證碼", forState: .Normal)
            isCounting = false
        }
    }
}


當(dāng)remainingSeconds變化時(shí)更新sendButton的顯示文本。

倒計(jì)時(shí)的功能我們用NSTimer實(shí)現(xiàn),先聲明一個(gè)NSTimer實(shí)例:

復(fù)制代碼 代碼如下:

var countdownTimer: NSTimer?

然后我們聲明一個(gè)變量來開啟和關(guān)閉倒計(jì)時(shí):
復(fù)制代碼 代碼如下:

var isCounting = false {
    willSet {
        if newValue {
            countdownTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "updateTime", userInfo: nil, repeats: true)

            remainingSeconds = 10
            sendButton.backgroundColor = UIColor.grayColor()
        } else {
            countdownTimer?.invalidate()
            countdownTimer = nil

            sendButton.backgroundColor = UIColor.redColor()
        }

        sendButton.enabled = !newValue
    }
}


同樣,我們給isCounting添加一個(gè)willSet方法,當(dāng)isCounting的newValue為true時(shí),我們通過調(diào)用NSTimer的類方法
scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:創(chuàng)建并啟動(dòng)剛才聲明的countdownTimer實(shí)例,這個(gè)實(shí)例每一秒鐘調(diào)用一次updateTime:方法:
復(fù)制代碼 代碼如下:

func updateTime(timer: NSTimer) {
     // 計(jì)時(shí)開始時(shí),逐秒減少remainingSeconds的值
    remainingSeconds -= 1
}

當(dāng)isCounting的newValue為false時(shí),我們停止countdownTimer并將countdownTimer設(shè)置為nil。

此外我們還設(shè)置了倒計(jì)時(shí)的時(shí)間(這里為了演示時(shí)間設(shè)置為5秒)和發(fā)送按鈕在不同isCounting狀態(tài)下的樣式(這里調(diào)整了背景色)和是否可點(diǎn)擊。

最后實(shí)現(xiàn)sendButtonClick:方法,這個(gè)方法在點(diǎn)擊sendButton時(shí)調(diào)用:

復(fù)制代碼 代碼如下:

 func sendButtonClick(sender: UIButton) {
    // 啟動(dòng)倒計(jì)時(shí)
    isCounting = true
}

完成!

相關(guān)文章

  • iOS開發(fā)項(xiàng)目- 基于WebSocket的聊天通訊(1)

    iOS開發(fā)項(xiàng)目- 基于WebSocket的聊天通訊(1)

    這篇文章主要介紹了iOS開發(fā)項(xiàng)目- 基于WebSocket的聊天通訊,WebSocket是web通信方式的一種,有需要的可以了解一下。
    2016-11-11
  • iOS 使用Moya網(wǎng)絡(luò)請(qǐng)求的實(shí)現(xiàn)方法

    iOS 使用Moya網(wǎng)絡(luò)請(qǐng)求的實(shí)現(xiàn)方法

    這篇文章主要介紹了iOS 使用Moya網(wǎng)絡(luò)請(qǐng)求的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • IOS 百度糯米客戶端登錄BUG

    IOS 百度糯米客戶端登錄BUG

    這篇文章主要介紹了IOS 百度糯米客戶端登錄BUG,問題分析及解決方案,本文介紹的非常詳細(xì),具有參考價(jià)值,特此分享供大家學(xué)習(xí)
    2016-01-01
  • iOS10推送之基礎(chǔ)知識(shí)(必看篇)

    iOS10推送之基礎(chǔ)知識(shí)(必看篇)

    相信每位iOS開發(fā)者們都知道,在iOS10更新之后,推送也是做了一些小小的修改,下面我就給大家仔細(xì)說說iOS10的推送,有需要的朋友們可以參考借鑒。下面來一起看看吧。
    2016-09-09
  • iOS禁止所有輸入法表情的方法

    iOS禁止所有輸入法表情的方法

    這篇文章主要為大家詳細(xì)介紹了iOS禁止所有輸入法表情的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • UICollectionView 實(shí)現(xiàn)圖片瀏覽效果

    UICollectionView 實(shí)現(xiàn)圖片瀏覽效果

    這篇文章主要為大家介紹了UICollectionView 實(shí)現(xiàn)圖片瀏覽效果示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • NSString屬性何時(shí)用strong何時(shí)用copy?

    NSString屬性何時(shí)用strong何時(shí)用copy?

    相信各位iOS開發(fā)者們都考慮過這個(gè)問題,平時(shí)寫NSString的屬性時(shí)都用copy,那strong要何時(shí)用呢?下面這篇文章就來看一下什么時(shí)候應(yīng)該用copy,什么時(shí)候應(yīng)該用strong。有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • iOS和JS交互教程之WKWebView-協(xié)議攔截詳解

    iOS和JS交互教程之WKWebView-協(xié)議攔截詳解

    這篇文章主要給大家介紹了關(guān)于iOS和JS交互教程之WKWebView-協(xié)議攔截的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 詳解Objective-C編程中對(duì)設(shè)計(jì)模式中適的配器模式的使用

    詳解Objective-C編程中對(duì)設(shè)計(jì)模式中適的配器模式的使用

    這篇文章主要介紹了Objective-C編程中對(duì)設(shè)計(jì)模式中適的配器模式的使用,適配器模式中的Adapter適配器允許接口不兼容的類在一起工作,需要的朋友可以參考下
    2016-03-03
  • iOS開發(fā)xconfig和script腳本使用詳解

    iOS開發(fā)xconfig和script腳本使用詳解

    這篇文章主要為大家介紹了iOS開發(fā)xconfig和script腳本使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論

清苑县| 阜新市| 灵丘县| 虹口区| 赤壁市| 盈江县| 永寿县| 马边| 滕州市| 巨野县| 永定县| 左云县| 雅安市| 虹口区| 偃师市| 辉南县| 叙永县| 阜平县| 冀州市| 莱芜市| 马关县| 望都县| 台南县| 五台县| 兴化市| 凤冈县| 周至县| 东乡| 滁州市| 信丰县| 西丰县| 深水埗区| 株洲县| 连州市| 夏河县| 康乐县| 双柏县| 西乡县| 威远县| 双牌县| 乡宁县|