Swift--簡單的定時器
阿新 • • 發佈:2019-01-29
定時器運用的場景也很多,譬如輪播圖的自動滾動效果、註冊時的傳送簡訊按鈕、自定義的定時動畫效果等等。所以隨手寫寫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