【问题标题】:How we can change current Month all Past Dates title Color in FSCalendar in Swift我们如何在 Swift 的 FSCalendar 中更改当前月份所有过去的日期标题颜色
【发布时间】:2020-08-25 06:47:07
【问题描述】:

我想更改所有过去的日期标题颜色在 Swift 中的 fscalendar 不是特定日期 我添加了这段代码:- 委托方法:-

func calendar(calendar: FSCalendar!, appearance: FSCalendarAppearance!, titleDefaultColorForDate date: NSDate!) -> UIColor! {
    
    if date .compare(Date()) == .orderedAscending {
        return .green
    }else {
        return .red
    }
}

【问题讨论】:

  • 您在使用这种方法时遇到了什么问题?
  • 方法没有被调用所以颜色没有改变

标签: swift swift4.1


【解决方案1】:

尝试连接delegate和日历视图的数据源并检查,因为我用这个方法得到了输出

class YourViewController: UIViewController, FSCalendarDelegate, FSCalendarDataSource, FSCalendarDelegateAppearance {
            
             .....
            
     override func viewDidLoad()
     {
          super.viewDidLoad()
          yourCalendarView.delegate = self
          yourCalendarView.dataSource = self
        
          //If you are using storyboard make sure data source and delegates connected
                   
     }
        
               ......
        
     func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, titleDefaultColorFor date: Date) -> UIColor? {
        
         //Remove timeStamp from date
         if date.removeTimeStamp!.compare(Date().removeTimeStamp!) == .orderedAscending {
        
            return .green
        
         }else if date.removeTimeStamp!.compare(Date().removeTimeStamp!) == .orderedDescending{
        
            return .red
        
         } else {
        
            return .black

         }
                
      }
}

extension Date {

    public var removeTimeStamp : Date? {
        guard let date = Calendar.current.date(from: Calendar.current.dateComponents([.year, .month, .day], from: self)) else {
         return nil
        }
        return date
    }
}

输出:

如果您希望过去和未来日期的标题颜色相同,请使用以下代码

func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, titleDefaultColorFor date: Date) -> UIColor? {
            
     if date.removeTimeStamp!.compare(Date().removeTimeStamp!) == .orderedAscending || date.removeTimeStamp!.compare(Date().removeTimeStamp!) == .orderedDescending {
                
         return .green
                
      } else {
                
         return .black
      }
            
}

输出:

【讨论】:

  • 感谢您的回复,我会关注这个的。
  • 我不想更改当前日期标题颜色
  • 仍然,当前日期标题的颜色随着未来日期1变为红色。实际上我只想更改过去日期和未来日期标题颜色而不是当前日期标题。谢谢
  • 但过去日期和未来日期是相同的标题颜色正如我上面提到的只想更改过去日期和未来日期标题颜色不适用于当前日期标题颜色
  • @Khushtarparvez 更新了两个选项的答案我不知道你想要什么输出?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多