我在 SwiftUI 中有一个水平 ScrollView,我想“动态”居中。滚动视图中的内容将是一个动态图表,用户可以通过改变年份来改变它的宽度(5、10、15 年图表水平增长)。
无论如何,我有两个问题:
我在水平滚动视图中的内容似乎是左对齐的,任何用填充将其居中的尝试都只是让它偏离居中,并且很难考虑各种屏幕尺寸。
当我尝试使用 GeometryReader 时,底部的图表“图例”被推到页面底部,Spacer() 无法修复它。
struct ChartView: View {
var body: some View {
VStack(alignment: .center) {
GeometryReader { geo in
ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(0..<self.chartSettings.getChartYears(), id:\.self) { index in
ColumnView()
}
}
}
.background(Color.gray)
.frame(maxHeight: geo.size.height/2)
}
//Chart Legend
HStack{
Rectangle()
.frame(width: 10, height: 10)
.foregroundColor(Color.init(#colorLiteral(red: 0.4666666687, green: 0.7647058964, blue: 0.2666666806, alpha: 1)))
Text("First Value")
.font(.system(size: 12))
Rectangle()
.frame(width: 10, height: 10)
.foregroundColor(Color.init(#colorLiteral(red: 0.2263821661, green: 0.4659538441, blue: 0.08977641062, alpha: 1)))
Text("Second Value")
.font(.system(size: 12))
}
}
}
}
左边是当前代码的样子,右边是我希望它的样子,无论屏幕尺寸/iPhone 型号如何。
注意这是我使用滚动视图的原因:
<iframe src='https://gfycat.com/ifr/DeficientNiceInchworm' frameborder='0' scrolling='no' allowfullscreen width='400' height='210'></iframe>