ForEach循环内的VStack不遵守WatchOS中的对齐参数

问题描述 投票:1回答:1

我有一个VStack,在.leading内的ForEach循环内具有对齐ScrollView,并且不考虑对齐参数。如果我在VStack循环之外只有一个ForEach,则使用对齐参数,并且视图将正确显示。

    ScrollView{
        // THIS DISPLAYS CORRECTLY
        VStack(alignment: .leading){
            Text("namename")
                .font(.headline)
                .lineLimit(1)
            Text("namename  name")
                .font(.subheadline)
                .lineLimit(1)
        }
        .padding()
        .frame(minWidth: 0, maxWidth: .infinity)
        .background(Color.gray.opacity(0.20))
        .cornerRadius(5)
        .padding(.bottom)

        ForEach(self.list_of_names, id: \.self) { item in
            // THIS DOES NOT DISPLAY CORRECTLY
            VStack(alignment: .leading){
                Text(item)
                    .font(.headline)
                    .lineLimit(1)
                Text(item + " name")
                    .font(.subheadline)
                    .lineLimit(1)
            }
            .frame(minWidth: 0, maxWidth: .infinity)
            .background(Color.gray.opacity(0.20))
            .cornerRadius(5)
            .padding(.bottom)
        }

    }
    .padding()

enter image description here

第一行具有正确的对齐方式,并且在ForEach循环的外部,而其他行在循环的内部。蓝线代表我突出显示VStack循环中的每个ForEach

swift swiftui watch-os swiftui-list
1个回答
0
投票

在ForEach循环中创建的VStack似乎确实符合alignment参数。将文本与前端对齐仅适用于VStack中较短的项目。

在顶部VStack中,顶部的“ namename”仅位于左侧,因为下面的“ namename name”离ScrollView的中心宽得多。因此,顶级VStack并不是实现所需的ScrollView对齐的正确方法。

您在寻找什么:

将对齐参数添加到VStack的框架中

.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
© www.soinside.com 2019 - 2024. All rights reserved.