forked from RaffiKian/RKCalendar
-
Notifications
You must be signed in to change notification settings - Fork 2
/
RKWeekdayHeader.swift
50 lines (39 loc) · 1.48 KB
/
RKWeekdayHeader.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//
// RKWeekdayHeader.swift
// RKCalendar
//
// Created by Raffi Kian on 7/14/19.
// Copyright © 2019 Raffi Kian. All rights reserved.
//
import SwiftUI
struct RKWeekdayHeader : View {
var rkManager: RKManager
var body: some View {
HStack(alignment: .center) {
ForEach(self.getWeekdayHeaders(calendar: self.rkManager.calendar), id: \.self) { weekday in
Text(weekday)
.font(.system(size: 20))
.frame(minWidth: 0, maxWidth: .infinity)
.foregroundColor(self.rkManager.colors.weekdayHeaderColor)
}
}.background(rkManager.colors.weekdayHeaderBackColor)
}
func getWeekdayHeaders(calendar: Calendar) -> [String] {
let formatter = DateFormatter()
var weekdaySymbols = formatter.shortStandaloneWeekdaySymbols
let weekdaySymbolsCount = weekdaySymbols?.count ?? 0
for _ in 0 ..< (1 - calendar.firstWeekday + weekdaySymbolsCount){
let lastObject = weekdaySymbols?.last
weekdaySymbols?.removeLast()
weekdaySymbols?.insert(lastObject!, at: 0)
}
return weekdaySymbols ?? []
}
}
#if DEBUG
struct RKWeekdayHeader_Previews : PreviewProvider {
static var previews: some View {
RKWeekdayHeader(rkManager: RKManager(calendar: Calendar.current, minimumDate: Date(), maximumDate: Date().addingTimeInterval(60*60*24*365), mode: 0))
}
}
#endif