更改标签文本 &颜色取决于当前时间 [英] Changing Label Text & Colour Depending On Current Time

查看:26
本文介绍了更改标签文本 &颜色取决于当前时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试更改您在我的屏幕截图中看到的带有绿色背景并显示我们已开放的标签.

I am trying to change the label that you see in my screenshot that has a green background and says We Are Open.

我希望底部标签在列出的营业时间过去后变成红色并说对不起,我们已关闭",然后在正确的营业时间返回绿色并说我们已营业".

I would like the bottom label to turn RED and say "Sorry we are closed" whenever the listed opening times have passed and then go back to GREEN and say "We Are Open" at the correct opening times.

我已成功将日期和时间导入顶部标签,但我不确定底部标签如何.

I've managed to import date and time successfully into the top label but I'm not sure how do the bottom label.

代码如下:

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)
    }

}

推荐答案

下面的代码我已经尝试过,它会正常工作.最初我创建了两个具有适当约束的 UILabel.然后为两个标签创建出口以查看控制器.然后试试这个代码.

Below code i have try and it will work fine. Initially i created two UILabel with proper constraints. Then Create outlets for two label to view controller. Then try this code.

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()

    }


}

swift 3 的扩展:

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

这篇关于更改标签文本 &颜色取决于当前时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆