IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    计时器教程

    SwiftGG翻译组发表于 2016-12-28 22:51:40
    love 0

    作者:Arthur Knopper,原文链接,原文日期:2016-10-31
    译者:Crystal Sun;校对:星夜暮晨;定稿:CMB

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

    打开 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 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg。



沪ICP备19023445号-2号
友情链接