//
// 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