Due to the varying number of days in each month, I am unsure how to enable monthly paging in Charts.
In Apple's official example, SwiftChartsExample, there is only an example showing the sales of the "last 30 days":
.chartXVisibleDomain(length: 3600 * 24 * 30)
I have tried using scrollPosition
to calculate the number of days in the current month, like this:
var days: Int { let current = Calendar.current let dateRange = current.range(of: .day, in: .month, for: scrollPosition) return dateRange?.count ?? 0 } ... .chartXVisibleDomain(length: 3600 * 24 * days) ... .chartScrollPosition(x: $scrollPosition) ...
But I found that it does not work as expected. 😢
Both southr's original post and jlilest's suggestion are correct.
Swift Charts currently only has a continuous time scale / axis, therefore, any unit of time that may vary will vary.
Scrolling along an underlying time scale (Plottable is Date) has the same limitation; time is modeled as continuous.
The current workaround is the choice of the desired temporal resolution, eg. monthly, using a categorical scale/axis (where the Plottable value is a String).
Scrolling is supported for categorical scales too.