1. 程式人生 > >Swift--簡單的定時器

Swift--簡單的定時器

定時器運用的場景也很多,譬如輪播圖的自動滾動效果、註冊時的傳送簡訊按鈕、自定義的定時動畫效果等等。所以隨手寫寫swift的定時器,有需要的人可以參考參考,程式碼實現功能部分,UI部分使用拖拉控制元件的形式。文章尾部有Demo下載連結


//
//  ViewController.swift
//  swiftTimer
//
//  Created by hhg on 16/7/21.
//  Copyright © 2016年 hhg. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    
    // 寬高 S = screen
    let SWIDTH = UIScreen.mainScreen().bounds.size.width
    
    // 屬性  OC可以用0.  swift只能用0.0
    var counter = 0.0
    var timer = NSTimer()
    var isPlaying = false
    
    // 計數器的螢幕、開始鍵、暫停鍵、重置鍵
    @IBOutlet weak var timeLabel: UILabel!
    @IBOutlet weak var startBtn: UIButton!
    @IBOutlet weak var pauseBtn: UIButton!
    @IBOutlet weak var resetBtn: UIButton!
    
    // 設定狀態列的顏色為白色
    /*
     狀態列黑色 UIStatusBarStyle.Default
     狀態列白色 UIStatusBarStyle.LightContent
     */
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
        return UIStatusBarStyle.LightContent
    }
    
    // 載入檢視
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 建立
        self.createLabel()
        self.createBtn()
    }
    
    // 建立label
    func createLabel() {
        timeLabel.text = String(counter)
        timeLabel.layer.cornerRadius = SWIDTH / 6.0
        timeLabel.clipsToBounds = true
    }
    
    func createBtn() {
        
        // 開始按鈕
        startBtn.addTarget(self, action: #selector(ViewController.play(_:)), forControlEvents: .TouchUpInside)
        
        // 重置按鈕
        resetBtn.addTarget(self, action: #selector(ViewController.reset(_:)), forControlEvents: .TouchUpInside)
        
        // 暫停按鈕
        pauseBtn.addTarget(self, action: #selector(ViewController.pasuse(_:)), forControlEvents: .TouchUpInside)
    }
    
    // 開始功能
    func play(btn:UIButton) {
        if isPlaying {
            return
        }
        timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(ViewController.updateTimer), userInfo: nil, repeats: true)
        isPlaying = true
    }
    
    // 重置功能
    func reset(btn:UIButton) {
        timer.invalidate()
        counter = 0
        timeLabel.text = String(counter)
        isPlaying = false
    }
    
    // 暫停功能
    func pasuse(btn:UIButton) {
        timer.invalidate()
        isPlaying = false
    }
    
    // 定時功能
    func updateTimer() {
        counter = counter + 0.1
        timeLabel.text = String(format: "%.1f",counter)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
}

Demo下載連結 Demo