美文网首页
计时器教程

计时器教程

作者: sing_crystal | 来源:发表于2016-12-19 19:31 被阅读83次

    原文链接
    作者:Arthur Knopper
    原文日期:2016-10-31
    译者:Crystal Sun

    本节教程讲述如何创建一个简单的计时器,功能有开始、暂停和重置归零,使用 Xcode 8 和 iOS10。

    打开 Xcode,创建一个 Single View Application。

    点击 Next,product name 一栏填写 IOS10StopwatchTutorial,填写好 Organization Name 和 Organization Identifier,Language 选择 Swift,Devices 选择 iPhone。

    Storyboard,拖一个 Vertical Stack View 到主界面,拖一个 Label 到 stack view 里,title 改为 “00:00”。接下来,拖三个 button 到 stack view 里,位于 Label 下面,title 分别改为"Start","Pause" 和 “Reset”。Storyboard 看起来如下图:

    选中 vertical Stack View,点击 Storyboard 右下角的 Auto Layout 中的 Align 按钮,在弹出窗中输入下图中的值,点击 Add 1 Constraint。

    选中 vertical Stack View,点击 Storyboard 右下角的 Auto Layout 中的 Pin 按钮,在弹出窗中输入下图中的值,点击 Add 1 Constraint。

    点击 Assistant Editor,确保 ViewController.swift 文件可见。按住 Ctrl,把 Label 拖到 ViewController 类文件里,创建一个 Outlet 如下图:

    按住 Ctrl,把 Start 按钮拖到 ViewController 类文件里,创建一个 Outlet 如下图:

    按住 Ctrl,把 Pause 按钮拖到 ViewController 类文件里,创建一个 Outlet 如下图:

    按住 Ctrl,把 Start 按钮拖到 ViewController 类文件里,创建一个 Action 如下图:

    按住 Ctrl,把 Pause 按钮拖到 ViewController 类文件里,创建一个 Action 如下图:

    按住 Ctrl,把 Reset 按钮拖到 ViewController 类文件里,创建一个 Action 如下图:

    找到 ViewController.swift 文件,增加下列属性:

    var counter = 0.0
    var timer = Timer()
    var isPlaying = false
    

    更改 viewDidLoad 方法:

    override func viewDidLoad() {
        super.viewDidLoad()
            
        timeLabel.text = String(counter)
        pauseButton.isEnabled = false
    }
    

    实现 IBAction 方法:

    @IBAction func startTimer(_ sender: AnyObject) {
        if(isPlaying) {
            return
        }
        startButton.isEnabled = false
        pauseButton.isEnabled = true
            
        timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(UpdateTimer), userInfo: nil, repeats: true)
        isPlaying = true
    }
        
    @IBAction func pauseTimer(_ sender: AnyObject) {
        startButton.isEnabled = true
        pauseButton.isEnabled = false
            
        timer.invalidate()
        isPlaying = false
    }
    
    @IBAction func resetTimer(_ sender: AnyObject) {
        startButton.isEnabled = true
        pauseButton.isEnabled = false
            
        timer.invalidate()
        isPlaying = false
        counter = 0.0
        timeLabel.text = String(counter)
    }
    

    isPlaying 布尔值用于检查计时器的 timer 是否正在运行。NSTimer 类里的 invalidate 方法可以停止计时。计时器开始计时时调用 updateTimer 方法。

    func UpdateTimer() {
        counter = counter + 0.1
        timeLabel.text = String(format: "%.1f", counter)
    }
    

    运行工程代码,在模拟器中点击按钮使用计时器。

    在 ioscreator 的 github 上可以下载到本节课程 IOS10StopWatchTutorial 的源代码。

    本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权。

    相关文章

      网友评论

          本文标题:计时器教程

          本文链接:https://www.haomeiwen.com/subject/zhgtvttx.html