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

时间:2019-10-11 19:14:21

标签: swift swiftui watchos swiftui-list

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

    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

1 个答案:

答案 0 :(得分:1)

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

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

您要查找的内容:

为VStack保留对齐参数。

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

.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)