bounty还有3天到期。回答此问题可获得+50声望奖励。markb希望引起更多关注这个问题。
我正在寻找关于如何构建SwiftUI每日日历列表的建议,因为我正在努力思考如何实现这一点。
这是我尝试创建的列表类型:image
我可以创建一个VStack来垂直循环一天中的小时数,然后再循环分割线--这看起来像苹果日历应用程序视图:blank list
我不明白的是如何将日历条目与时间对齐,然后如果是长事件,则跨越多个小时。
我从MSGraph接收带有startDate和endDate的事件数据。
我不需要拖动的事件的能力,只显示在时间槽。
我的目标是自己构建这一切,尽管我知道可能有一些软件包可以提供帮助。这只是应用程序的一小部分,当我只想有一个查看器时,我不想让日历功能过载。
这是我在哪里,但不知道如何将事件添加到列表中:
struct ContentView: View {
var body: some View {
ScrollView {
VStack(alignment: .leading) {
ForEach(8..<17) { index in
Text("\(index)")
Divider()
.offset(y: -22)
.padding(.leading, 30)
Spacer()
}
}
}
.frame(maxWidth: .infinity, alignment: .leading)
.padding()
}
}
2条答案
按热度按时间5lhxktic1#
我会在小时网格上添加单个事件作为覆盖或在ZStack中。必须根据起始日期计算偏移。
下面是一个示例实现:
plupiseo2#
将您的事件时间与您可以使用
DateComponents
的ForEach
时间相匹配。然后,您可以按小时对事件进行“分组”。
现在要查找每小时的事件,您可以使用。
要调整它的大小,可以计算出
elapsedHours
,并使用类似于如果事件是1.5小时,则大小将是高度的1.5倍。
至于调整分钟,如11:15,你可以得到小时相当的分钟,并把它变成小时,然后抵消。
15分钟是0.25小时。
我建议使用
Calendar
和Measurement
来完成所有的数学运算。