diff --git a/Sources/SwiftUICharts/LineChart/Models/ChartData/LineChartData.swift b/Sources/SwiftUICharts/LineChart/Models/ChartData/LineChartData.swift index ee897ca9..01a678cb 100644 --- a/Sources/SwiftUICharts/LineChart/Models/ChartData/LineChartData.swift +++ b/Sources/SwiftUICharts/LineChart/Models/ChartData/LineChartData.swift @@ -81,11 +81,11 @@ public final class LineChartData: CTLineChartDataProtocol { } .padding(.horizontal, -4) - case .chartData: + case .chartData(let angle): if let labelArray = self.xAxisLabels { HStack(spacing: 0) { ForEach(labelArray.indices, id: \.self) { [unowned self] i in - XAxisChartDataCell(chartData: self, label: labelArray[i]) + XAxisChartDataCell(chartData: self, label: labelArray[i], rotationAngle: angle) .foregroundColor(self.chartStyle.xAxisLabelColour) .accessibilityLabel(Text("X Axis Label")) .accessibilityValue(Text("\(labelArray[i])")) @@ -95,7 +95,6 @@ public final class LineChartData: CTLineChartDataProtocol { } } } - .padding(.horizontal, -4) } } } diff --git a/Sources/SwiftUICharts/LineChart/Models/ChartData/MultiLineChartData.swift b/Sources/SwiftUICharts/LineChart/Models/ChartData/MultiLineChartData.swift index f9925cfd..d08cb9ca 100644 --- a/Sources/SwiftUICharts/LineChart/Models/ChartData/MultiLineChartData.swift +++ b/Sources/SwiftUICharts/LineChart/Models/ChartData/MultiLineChartData.swift @@ -78,11 +78,11 @@ public final class MultiLineChartData: CTLineChartDataProtocol { } .padding(.horizontal, -4) - case .chartData: + case .chartData(let angle): if let labelArray = self.xAxisLabels { HStack(spacing: 0) { ForEach(labelArray.indices, id: \.self) { [unowned self] i in - XAxisChartDataCell(chartData: self, label: labelArray[i]) + XAxisChartDataCell(chartData: self, label: labelArray[i], rotationAngle: angle) .foregroundColor(self.chartStyle.xAxisLabelColour) .accessibilityLabel(Text("X Axis Label")) .accessibilityValue(Text("\(labelArray[i])")) @@ -92,7 +92,6 @@ public final class MultiLineChartData: CTLineChartDataProtocol { } } } - .padding(.horizontal, -4) } } } diff --git a/Sources/SwiftUICharts/LineChart/Models/ChartData/RangedLineChartData.swift b/Sources/SwiftUICharts/LineChart/Models/ChartData/RangedLineChartData.swift index c0ad4c74..6816eab4 100644 --- a/Sources/SwiftUICharts/LineChart/Models/ChartData/RangedLineChartData.swift +++ b/Sources/SwiftUICharts/LineChart/Models/ChartData/RangedLineChartData.swift @@ -85,11 +85,11 @@ public final class RangedLineChartData: CTLineChartDataProtocol { } .padding(.horizontal, -4) - case .chartData: + case .chartData(let angle): if let labelArray = self.xAxisLabels { HStack(spacing: 0) { ForEach(labelArray.indices, id: \.self) { [unowned self] i in - XAxisChartDataCell(chartData: self, label: labelArray[i]) + XAxisChartDataCell(chartData: self, label: labelArray[i], rotationAngle: angle) .foregroundColor(self.chartStyle.xAxisLabelColour) .accessibilityLabel(Text("X Axis Label")) .accessibilityValue(Text("\(labelArray[i])")) @@ -99,7 +99,6 @@ public final class RangedLineChartData: CTLineChartDataProtocol { } } } - .padding(.horizontal, -4) } } } diff --git a/Sources/SwiftUICharts/SharedLineAndBar/Views/ YAxisLabelCell.swift b/Sources/SwiftUICharts/SharedLineAndBar/Views/ YAxisLabelCell.swift index cf5a2332..8907cb8a 100644 --- a/Sources/SwiftUICharts/SharedLineAndBar/Views/ YAxisLabelCell.swift +++ b/Sources/SwiftUICharts/SharedLineAndBar/Views/ YAxisLabelCell.swift @@ -9,10 +9,10 @@ import SwiftUI internal struct XAxisDataPointCell: View where ChartData: CTLineBarChartDataProtocol { - @ObservedObject var chartData : ChartData + @ObservedObject var chartData: ChartData - private let label : String - private let rotationAngle : Angle + private let label: String + private let rotationAngle: Angle internal init(chartData: ChartData, label: String, rotationAngle : Angle) { self.chartData = chartData @@ -41,22 +41,23 @@ internal struct XAxisDataPointCell: View where ChartData: CTLineBarCh .onAppear { chartData.viewData.xAxisLabelHeights.append(width) } - } } internal struct XAxisChartDataCell: View where ChartData: CTLineBarChartDataProtocol { - @ObservedObject var chartData : ChartData + @ObservedObject var chartData: ChartData - private let label : String + private let label: String + private let rotationAngle: Angle - internal init(chartData: ChartData, label: String) { + internal init(chartData: ChartData, label: String, rotationAngle : Angle) { self.chartData = chartData self.label = label + self.rotationAngle = rotationAngle } - @State private var height: CGFloat = 0 + @State private var width: CGFloat = 0 internal var body: some View { @@ -67,15 +68,16 @@ internal struct XAxisChartDataCell: View where ChartData: CTLineBarCh GeometryReader { geo in Color.clear .onAppear { - self.height = geo.frame(in: .local).height + self.width = geo.frame(in: .local).width } } ) .fixedSize(horizontal: true, vertical: false) + .rotationEffect(rotationAngle, anchor: .center) + .frame(height: width, alignment: .top) .onAppear { - chartData.viewData.xAxisLabelHeights.append(height) + chartData.viewData.xAxisLabelHeights.append(width) } - } }