0109iosapp_Timer类计时,结束;视图文本内容修改

//
//  ViewController.swift
//  nav0108
//
//  Created by Mac on 1/8/19.
//  Copyright © 2019 wjb. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
//当前时间显示
    @IBOutlet weak var timeNowShow: UILabel!
    //计时器标题
    @IBOutlet weak var timeShowTitle: UILabel!
//计时器显示
    @IBOutlet weak var timeCountShow: UILabel!
    
    @IBAction func cameraAction(_ sender: Any) {
        print("启动相机")
    }
    
    
    
//    实例化timer()类
    var timer = Timer()
    
//    计时器中执行的方法
   @objc func timeCount()  {
//
    print("1秒过去了")
    }
//获取当前时间的方法
    func currentTime() -> String {
     let dateformatter = DateFormatter()
     dateformatter.dateFormat = "HH:mm:ss"// 自定义时间格式
     return dateformatter.string(from: Date())
    }
    
    @IBAction func timeStartItem(_ sender: Any) {
//        改变显示标题
        timeShowTitle.text = "计时器已开启"
//        开启计时器,实例化Timer()
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.timeCount), userInfo: nil, repeats: true)
    }
    
    @IBAction func timeStopItem(_ sender: Any) {
//        改变显示标题
        timeShowTitle.text = "计时器停止中"
//        计时器停止方法
        timer.invalidate()
    }
    
//第二个以秒计数的计数器
//    秒数视图变量
    @IBOutlet weak var secondShow: UILabel!
//    设置计时器标识,0标识未开始,1标识开始
    var secondFlag = 0
//设置初始秒数0
    var secontStr = 0
//秒数控制视图
    @IBAction func timeCountControl2(_ sender: UIBarButtonItem) {
//        点击开始计时,再次点击停止计时,三次点击再次开始计时
        if secondFlag == 0 { //计时未开始为真
            timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.secondCount), userInfo: nil, repeats: true)
//            fire()方法让秒数计算顺畅
            timer.fire()
//            修改标识
            secondFlag = 1
        }else{
//            暂停计时
            timer.invalidate()
//            修改标识
            secondFlag = 0
        }
        
    }
//秒数计时开始执行方法
    @objc func secondCount(){
//秒数+1
        secontStr = secontStr + 1
        secondShow.text = String( secontStr )
    }
//    视图暂停
    
    @IBAction func secondCountP2(_ sender: UIBarButtonItem) {
        //            暂停计时
        timer.invalidate()
        //            修改标识
        secondFlag = 0
    }
//    视图重置
    
    @IBAction func secondCountR2(_ sender: UIBarButtonItem) {
        //            暂停计时
        timer.invalidate()
        //        重置相关数据
        secondFlag = 0
        secontStr = 0
        secondShow.text = String(0)
        
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
//        显示当前时间,注意时间设置为常量
        let timeNowStr = currentTime()
//        timeNowStr = currentTime()
        timeNowShow.text = timeNowStr
        
        
        
    }


}

/*
导航 nav
导航按钮 item
空间站位 space
底部工具栏 tool
更改视图中的显示文本内容   视图变量.text = 文本
*/

/*
 定时器类,到时间可以触发事件。一般在viewController或者UIView的代码中使用
 
 1.定义一个定时器
 
 var timer = Timer() //首先需要声明一个timer变量,一般声明为类的成员变量
 
 2.定义一个定时器计时结束时,触发的处理方法。一定要在方法前加@objc
 
 @objc func UpdateTimer() {
 
 //此处可以添加处理代码
 
 }
 
 3.初始化并启动定时器的代码
 
 timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.UpdateTimer), userInfo: nil, repeats: true)//这一句会同时启动计数器
 
 
 
 解释一下Timer.scheduledTimer,这个方法的定义如下:
 
 Timer.scheduledTimer(timeInterval: TimeInterval, target: Any, selector: Selector, userInfo: Any?, repeats: Bool)
 
 timeInterval:是定时器触发间隔时间,单位是 秒
 
 target:是指定触发时处理方法, 让谁执行,让那个类执行,一般输入self
 selector: #selector(ViewController.UpdateTimer)里的ViewController.UpdateTimer前面声明的UpdateTimer方法
 就是将将要执行的方法写在括号内,自定义方法前用 @objc,
 
 userInfo:是否需要用户信息,一般给nil就行了,
 
 repeats:如果是false,定时器只触发一次。如果要一直触发,请用true,就是一直执行
 
 timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.timeCount), userInfo: nil, repeats: true)
 方法前可以加类名,也可以不加
 
 让计时器顺畅 ,在方法后面加
 timer.fier()
 
 4.停止计数器
 
 timer.invalidate()
 
 
 
 
 
 
 */

对应案例 nav0108

猜你喜欢

转载自blog.csdn.net/whqwjb/article/details/86143621