Timer wDidLoad(){ super.viewDidLoad() } 重写函数didReceiveMemoryWarning(){ 超级。我收到了记忆警告() //处置所有可以重新创建的资源。 } } 这不是一个正确的答案,但我开发了一种解决方法,在按下re
wDidLoad(){ super.viewDidLoad() } 重写函数didReceiveMemoryWarning(){ 超级。我收到了记忆警告() //处置所有可以重新创建的资源。 } }Timer wDidLoad(){ super.viewDidLoad() } 重写函数didReceiveMemoryWarning(){ 超级。我收到了记忆警告() //处置所有可以重新创建的资源。 } } 这不是一个正确的答案,但我开发了一种解决方法,在按下re,timer,countdown,Timer,Countdown,wDidLoad(){ super.viewDidLoad() } 重写函数didReceiveMemoryWarning(){ 超级。我收到了记忆警告() //处置所有可以重新创建的资源。 } } 这不是一个正确的答案,但我开发了一种解决方法,在按下resetBtnPressed时隐藏天、小时、分钟、秒标签。在按下STARTBTN时,标签中添加了.isHidden=false。隐藏并显示我想要的方式,即使计时器没有失效。这不是一个正确的答案,但我开发了一个解决方法,在重置按下时隐藏天、小时、分
这不是一个正确的答案,但我开发了一种解决方法,在按下resetBtnPressed时隐藏天、小时、分钟、秒标签。在按下STARTBTN时,标签中添加了.isHidden=false。隐藏并显示我想要的方式,即使计时器没有失效。这不是一个正确的答案,但我开发了一个解决方法,在重置按下时隐藏天、小时、分钟、秒标签。在按下STARTBTN时,标签中添加了.isHidden=false。隐藏并显示我想要的方式,即使计时器没有失效。
import UIKit
class ViewController: UIViewController {
var resetBtnStatus: Bool = false
var timer = Timer()
let userCalendar = Calendar.current
let requestedComponent: Set<Calendar.Component> = [.day,.hour,.minute,.second]
var departureDateTime: Date?
@IBOutlet weak var departureDateTimePicker: UIDatePicker!
@IBAction func departureDateTimePicker(_ sender: Any) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yy H:mm:ss"
departureDateTimePicker.addTarget(self, action: #selector(handler), for: UIControlEvents.valueChanged)
}
@IBOutlet weak var daysLabel: UILabel!
@IBOutlet weak var hoursLabel: UILabel!
@IBOutlet weak var minutesLabel: UILabel!
@IBOutlet weak var secondsLabel: UILabel!
func handler(sender: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yy H:mm:ss"
let departureDateTimeString = dateFormatter.string(from: departureDateTimePicker.date)
departureDateTime = dateFormatter.date(from: departureDateTimeString)
}
@IBAction func resetBtnPressed(_ sender: Any) {
if resetBtn.isSelected == true {
resetBtnStatus = true
}
departureDateTimePicker.isHidden = false
startBtn.isHidden = false
// let dateFormatter = DateFormatter()
// dateFormatter.dateFormat = "MM/dd/yy H:mm:ss"
// let startTime = Date()
// let endTime = startTime
// let timeDifference = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime)
// daysLabel.text = "\(timeDifference.day!) Days"
// hoursLabel.text = "\(timeDifference.hour!) Hours"
// minutesLabel.text = "\(timeDifference.minute!) Minutes"
// secondsLabel.text = "\(timeDifference.second!) Seconds"
}
// @IBAction func resetBtnPressed(_ sender: Any) {
// if resetBtn.isSelected == true {
// resetBtnStatus = true
// }
// departureDateTimePicker.isHidden = false
// startBtn.isHidden = false
// // let dateFormatter = DateFormatter()
// // dateFormatter.dateFormat = "MM/dd/yy H:mm:ss"
// // let startTime = Date()
// // let endTime = startTime
// // let timeDifference = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime)
// // daysLabel.text = "\(timeDifference.day!) Days"
// // hoursLabel.text = "\(timeDifference.hour!) Hours"
// // minutesLabel.text = "\(timeDifference.minute!) Minutes"
// // secondsLabel.text = "\(timeDifference.second!) Seconds"
// }
func printTime() {
if resetBtnStatus == false {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yy H:mm:ss"
let startTime = Date()
let endTime = departureDateTime
let timeDifference = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime!)
let startTimeDouble: Double = startTime.timeIntervalSinceReferenceDate
var endTimeDouble: Double?
endTimeDouble = (endTime?.timeIntervalSinceReferenceDate)
daysLabel.text = "\(timeDifference.day!) Days"
hoursLabel.text = "\(timeDifference.hour!) Hours"
minutesLabel.text = "\(timeDifference.minute!) Minutes"
secondsLabel.text = "\(timeDifference.second!) Seconds"
if endTimeDouble! > startTimeDouble {
daysLabel.text = "\(timeDifference.day!) Days"
hoursLabel.text = "\(timeDifference.hour!) Hours"
minutesLabel.text = "\(timeDifference.minute!) Minutes"
secondsLabel.text = "\(timeDifference.second!) Seconds"
}
else {
timer.invalidate()
daysLabel.text = ""
hoursLabel.text = ""
minutesLabel.text = ""
secondsLabel.text = ""
}
} else {
timer.invalidate()
daysLabel.text = ""
hoursLabel.text = ""
minutesLabel.text = ""
secondsLabel.text = ""
}
}
func runTimer() {
if resetBtnStatus == false {
let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true)
timer.fire()
}
if resetBtnStatus == true {
timer.invalidate()
}
}
@IBOutlet weak var startBtn: UIButton!
@IBAction func startBtnPressed(_ sender: Any) {
handler(sender: departureDateTimePicker)
printTime()
runTimer()
departureDateTimePicker.isHidden = true
startBtn.isHidden = true
}
@IBOutlet weak var resetBtn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}