Как выровнять центр VStack по точке SwiftUI - PullRequest
0 голосов
/ 07 августа 2020

У меня 5 VStacks в HStack, которое охватывает ширину экрана. VStack содержит Text Представления, которые имеют разную ширину, потому что они отображают разный текст. Что я хочу сделать, так это выровнять центр каждого VStack так, чтобы они были равномерно отделены друг от друга и краев экрана. Я знаю ширину экрана (я использовал GeometryReader), и я почти уверен, что для получения значения x каждого VStack мне нужно разделить ширину экрана на 6 и что центр каждого VStack должен приходиться на ширину экрана, разделенную на 6, а затем умноженную на число, которое представляет его позицию в HStack (таким образом, первое VStack в верхней части HStack будет равно 1). Поскольку все VStacks имеют разную ширину, я не думаю, что могу использовать аргумент spacing в HStack, чтобы выполнить sh this. Таким образом, мне нужен способ выровнять центр каждого VStack одинаково, чтобы между каждым из них и краем экрана было ровное пространство.

Вот мой код:

HStack() {
        VStack(spacing: 10){
            Text("123")
                .foregroundColor(Color.white)
            Text("Value 1")
                .foregroundColor(Color.gray)
        }
        

        VStack(spacing: 10){
            Text("6534675")
                .foregroundColor(Color.white)
            Text("Value 23")
                .foregroundColor(Color.gray)
        }
        
        VStack(spacing: 10){
            Text("6534")
                .foregroundColor(Color.white)
            Text("Value 203")
                .foregroundColor(Color.gray)
        }
        
        VStack(spacing: 10){
            Text("1055")
                .foregroundColor(Color.white)
            Text("Value 4589")
                .foregroundColor(Color.gray)
        }
        
        VStack(spacing: 10){
            Text("4")
                .foregroundColor(Color.white)
            Text("Value 5")
                .foregroundColor(Color.gray)
        }
        
    }.frame(width: geo.size.width)

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Можно использовать .position () для позиционирования центра вида.

Подробная документация: https://developer.apple.com/documentation/swiftui/vstack-view-modifiers

0 голосов
/ 07 августа 2020

Если вам известна ширина VStacks, вы можете работать с .padding ()

Пример синтаксиса:

VStack(spacing: 10){
        Text("4")
            .foregroundColor(Color.white)
        Text("Value 5")
            .foregroundColor(Color.gray)
    }.padding(10)
...