Подчеркивание содержимого VStack

#swiftui

#swiftui

Вопрос:

Я пытаюсь добавить строку внизу a VStack , которая заполняет ширину VStack , которая определяется другим содержимым в VStack , но Rectangle я использую заполняет доступное пространство всего представления.

 struct ContentView: View {
    var body: some View {
        VStack {
            Text("Testing123")
            Rectangle().frame(height: 2)
         }
    }
}
  

изображение проблемы

Как я могу сделать Rectangle так, чтобы единственное значение имело ширину, необходимую для VStack соответствия его содержимому?

Комментарии:

1. Я думаю, вы можете сделать то, что хотите, с .background помощью или .overlay VStack . На эту ширину влияет ширина VStack , поэтому вы можете поместить на нее строку с некоторым дополнительным кодом, который связан с элементом выравнивания, таким как .frame или VStack .

Ответ №1:

Вот один из способов сделать это.

Поместите свой Rectangle в один .overlay() из VStack . Поместите прямоугольник в его собственный VStack и используйте a Spacer , чтобы нажать Rectangle на дно. Управляйте расстоянием между прямоугольником и вашим оригиналом VStack , добавляя .padding к последнему виду в VStack .

 struct ContentView: View {
    var body: some View {
        VStack {
            Text("Hi")
            Text("Testing123")
            Text("Bye").padding(.bottom, 10)
        }
        .overlay(
            VStack {
                Spacer()
                Rectangle().frame(height: 2)
            }
        )
    }
}
  

пример, выполняемый на симуляторе