swift - 如何使用 FSCalendar 为日期显示 2 个不同颜色的点?
问题描述
初级程序员在这里。
如果该日期有负交易和正交易,我会尝试显示两个不同颜色的点。
这是我的代码。它只显示一个点。
func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
let incomeTransaction = realm.objects(Transaction.self).filter(positiveTransactionPredicate(date: date))
let expenseTransaction = realm.objects(Transaction.self).filter(negativeTransactionPredicate(date: date))
for _ in incomeTransaction {
return 1
}
for _ in expenseTransaction {
return 1
}
return 0
}
func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, eventDefaultColorsFor date: Date) -> [UIColor]? {
let incomeTransaction = realm.objects(Transaction.self).filter(positiveTransactionPredicate(date: date))
let expenseTransaction = realm.objects(Transaction.self).filter(negativeTransactionPredicate(date: date))
for _ in incomeTransaction {
return [UIColor(rgb: Constants.green)]
}
for _ in expenseTransaction {
return [UIColor(rgb: Constants.red)]
}
return nil
}
此代码显示两个点,但它们的颜色相同:
func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
let incomeTransaction = realm.objects(Transaction.self).filter(positiveTransactionPredicate(date: date))
let expenseTransaction = realm.objects(Transaction.self).filter(negativeTransactionPredicate(date: date))
for _ in incomeTransaction {
return 2
}
for _ in expenseTransaction {
return 2
}
return 0
}
您如何告诉 FSCalendar 委托方法在日期上显示两个不同颜色的点?
像这样:
谢谢。
解决方案
似乎没有numberOfEventsForDate:(NSDate *)date;
正确实施。您返回 1 导致 1 个点
返回 1 将显示 1 个点,0 将显示 0 个点,2 将显示两个点。从示例项目
/**
* Asks the dataSource the number of event dots for a specific date.
*
* @see
* - (UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance eventColorForDate:(NSDate *)date;
* - (NSArray *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance eventColorsForDate:(NSDate *)date;
*/
- (NSInteger)calendar:(FSCalendar *)calendar numberOfEventsForDate:(NSDate *)date;
我建议看一下FSCalendar的 github 存储库中的示例。
objc 实现是这样的
//return 2 for 2 events
cell.numberOfEvents = [self.dataSourceProxy calendar:self numberOfEventsForDate:date];
如果你总是想要两个点,不管实际的事件数是多少,只要返回 2
func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
return 2
}
下载 Example.swift 项目并查看 FSCalendarSwiftExample.xcodeproj
推荐阅读
- string - 从可变字符串长度中删除(减去)最后 n 个字符
- python - Python项目的依赖控制
- plot - JULIA 语言中的原生 PGFPlots 改变字体大小
- linux - UDP communication is lost on linux, are "UDP sockets" managed differentely on linux compared to windows when using C# .NET Core 2.1?
- javascript - 我如何获取所选项目的第一行?
- grid - 如何在 Flutter 中将列和行项居中?
- android - 高度为 0dp 的 MapView 不显示
- javascript - 将从相机拍摄的图像转换为画布的侧面有灰色
- hadoop - 将文件从 Google Cloud Storage 加载到本地 Hadoop 集群
- azure - Web 服务器和电子邮件托管在不同的服务器中