У меня есть пользовательский график с некоторыми текстами, как показано ниже.Выравнивает первый текст правильно , выравнивает последний текст неправильно .Мне нужно, чтобы VStack с текстами растягивался как аккордеон, чтобы центр Y последнего текста совпадал с нижней частью диаграммы.
Как видно из синей подсветки Xcode, VStack получает тот же размер, что и диаграмма ссмещение.
![chart image](https://i.stack.imgur.com/GRpaZ.png)
Чтобы выровнять первый текст, я расширил VerticalAlignment, как видно из WWDC 2019 - Сессия 237 .
extension VerticalAlignment {
private enum TopChartAndMidTitle: AlignmentID {
static func defaultValue(in dimensions: ViewDimensions) -> Length {
return dimensions[.top]
}
}
static let topChartAndMidTitle = VerticalAlignment(TopChartAndMidTitle.self)
}
Тогда я использовал это так:
var labels = ["1900", "1800", "1700", "1600", "1500", "1400"]
var body: some View {
HStack(alignment: .topChartAndMidTitle) {
chart()
.alignmentGuide(.topChartAndMidTitle) { $0[.top] }
valueLabels()
}
}
private func valueLabels() -> AnyView {
AnyView(VStack {
Text(labels[0]).font(.footnote)
.alignmentGuide(.topChartAndMidTitle) { $0[.bottom] / 2 }
ForEach(labels.dropFirst().identified(by: \.self)) { label in
Spacer()
Text(label).font(.footnote)
}
})
}
Вопрос: Как мне выровнять последний текст по основанию диаграммы и тем самым растянуть VStack?
Чтобы проверить это, просто замените мой пользовательский график на Rectangle().fill(Color.red)
.Это приведет к той же проблеме.