在 SwiftUI 的列表行中添加形状

Baq*_*han 3 ios swiftui swiftui-list

我正在尝试创建一个列表视图,其中的行如下所示:

在此处输入图片说明

但是,我无法对齐Circle前导侧的 。尝试使用Spacer(),HStackVStack,它只是不起作用。这是我的代码及其输出。

struct PeopleView: View {
    
    let people = ["Adam", "James"]
    
    var body: some View {
        NavigationView {
            List {
                ForEach(people, id: \.self) { person in
                    HStack {
                        Circle()
                        VStack {
                            Text("\(person)")
                        }
                    }
                }
            }
            .navigationBarTitle("People", displayMode: .inline)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

推

Asp*_*eri 5

实际上,在这种情况下,您不需要形状本身,而只是作为一个蒙版以在圆形中直观地呈现文本。

所以解决方案可以如下

演示

HStack {
    Text(person.prefix(2).uppercased()).bold()
        .foregroundColor(.white)
        .padding()
        .background(Color.red)
        .mask(Circle())          // << shaping text !!

    Spacer()
    VStack {
        Text("\(person)")
    }
}
Run Code Online (Sandbox Code Playgroud)