根据当前时间更改标签文本和颜色

应用截图

我正在尝试更改您在我的屏幕截图中看到的具有绿色背景的标签,并说我们是开放的。

我希望最下面的标签变成红色,并在上市开放时间过去的时候说“对不起我们已经关门了”,然后回到绿色,并在正确的开放时间说“我们是开放的”。

我设法成功导入date和时间到顶部的标签,但我不知道如何底部标签。

这里是代码:

import UIKit import Firebase import FirebaseInstanceID import FirebaseMessaging class FirstViewController: UIViewController { var timer = Timer() @IBOutlet weak var timeLabel: UILabel! @IBOutlet weak var openStatusLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. FIRMessaging.messaging().subscribe(toTopic: "/topics/news") self.timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(FirstViewController.tick), userInfo: nil, repeats: true) } @objc func tick() { timeLabel.text = DateFormatter.localizedString(from: NSDate() as Date, dateStyle: .medium, timeStyle: .medium) } } 

下面的代码我已经尝试,它会正常工作。 最初,我创build了两个适当约束的UILabel 。 然后创build两个标签的网点 ,以查看控制器。 然后尝试这个代码。

 import UIKit extension NSDate { func dayOfWeek() -> Int? { guard let calender: NSCalendar = NSCalendar.currentCalendar(), let component: NSDateComponents = calender.components(.Weekday, fromDate: self) else { return nil } return component.weekday } } class ViewController: UIViewController { @IBOutlet var timeOfTheDay: UILabel! //Top Label for showing current time @IBOutlet var Status: UILabel! //Status Label for showing open or close override func viewDidLoad() { super.viewDidLoad() self.dateCheck() } func dateCheck() { let today = NSDate().dayOfWeek() if today == 1 { //print("Sunday") self.closed() } else if today == 2 { //print("Monday") self.closed() } else if today == 3 { //print("Tuesday") self.uptoEvening() } else if today == 4 { //print("Wednesday") self.uptoNight() } else if today == 5 { // print("Thursday") self.uptoNight() } else if today == 6 { //print("Friday") self.uptoNight() } else { //print("Saturday") self.uptoEvening() } } func getTime() -> (hour:Int, minute:Int, second:Int) { let currentDateTime = NSDate() let calendar = NSCalendar.currentCalendar() let component = calendar.components([.Hour,.Minute,.Second], fromDate: currentDateTime) let hour = component.hour let minute = component.minute let second = component.second return (hour,minute,second) } func closed() { timeOfTheDay.text = String(getTime().hour)+" : "+String(getTime().minute)+" : "+String(getTime().second) timeOfTheDay.backgroundColor = UIColor.redColor() timeOfTheDay.textColor = UIColor.whiteColor() Status.text = "Sorry! Today, We are Closed!" Status.backgroundColor = UIColor.redColor() Status.textColor = UIColor.whiteColor() } func opened(endTime:String) { timeOfTheDay.text = String(getTime().hour)+" : "+String(getTime().minute)+" : "+String(getTime().second) timeOfTheDay.backgroundColor = UIColor.greenColor() timeOfTheDay.textColor = UIColor.whiteColor() Status.text = "Hi! still we are opened upto "+endTime Status.backgroundColor = UIColor.greenColor() Status.textColor = UIColor.whiteColor() } func uptoEvening() { let time = getTime().hour switch time { case 09...16: opened("17") //set time for 09:00 to 16:59 default:closed() } } func uptoNight() { let time = getTime().hour switch time { case 09...20: opened("21") //set time for 09:00 to 20:59 default:closed() } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } 

快速扩展3:

 extension Date { func dayOfWeek() -> Int? { let calender: Calendar = Calendar.current let component: DateComponents = (calender as NSCalendar).components(.weekday, from: self) return component.weekday } } 

在这里输入图像说明