2016-08-03 62 views
0

App Screenshot更改标签文本和颜色随着当前时间

我试图改变你我的截图,有一个绿色的背景,并说我们是开放的看到标签。

我希望底部标签变成红色,并在上市开放时间过去后说“对不起,我们已关闭”,然后回到绿色并在正确的开放时间说“我们是开放的”。

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

下面是代码:

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

} 
+0

请发表您的代码。 –

+0

将代码添加到原始帖子中。很多感谢 – Elfuthark

+1

tick()函数需要首先确定是否打开或关闭...首先确定。 http://stackoverflow.com/questions/6112075/ios-compare-two-dates,一旦你这样做,设置背景颜色和标签内容应该很容易。 – CSmith

回答

1

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

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

enter image description here

+0

'扩展日期{0} {0} func dayOfWeek() - > Int? { 后卫 让日历:日历= Calendar.current, 让组件:DateComponents = calendar.dateComponents(。天,来自:个体经营)其他{返回nil} 回报component.weekday } }'我有麻烦使用Xcode 8中的这部分代码,你知道Xcode 7中完美的功能吗? – Elfuthark

+0

你得到了什么错误?它完美的工作在Swift 2.0上 –

+0

是的,它在Xcode 7中完美工作,因为我构建并运行它,但随后当Swift 3中的语法发生变化时,我让它自动修复所有内容,但留下了一个错误'Type'Set 'has no member'day'' – Elfuthark

相关问题