如何在View中将Image(HStack)水平居中?我希望按钮保持左对齐,并且图像在 View 中水平居中。

目前我有这个结构:

VStack {
        HStack {
            Button(action: {
                print("Tapped")
            }, label: {
                Image("left-arrow")
                    .resizable()
                    .frame(width: 30, height: 30, alignment: .leading)
            }).padding(.leading, 20)

            Spacer()

            Image("twitter-logo")
                .resizable()
                .frame(width: 30, height: 30, alignment: .center)

        }
        Spacer()
    }

这给了我这个:

ios - 在SwiftUI中水平居中查看-LMLPHP

但我想实现这一目标:

ios - 在SwiftUI中水平居中查看-LMLPHP



ios - 在SwiftUI中水平居中查看-LMLPHP

最佳答案

将按钮大小保存到属性并为图像添加负填充是怎么回事?并在图像后注意额外的垫片。

struct ContentView: View {

    var buttonSize: Length = 30

    var body: some View {
        VStack {
            HStack {
                Button(action: {
                    print("Tapped")
                }, label: {
                    Image(systemName: "star")
                        .resizable()
                        .frame(width: buttonSize, height: buttonSize, alignment: .leading)
                })
                Spacer()
                Image(systemName: "star")
                    .resizable()
                    .frame(width: 30, height: 30, alignment: .center)
                    .padding(.leading, -buttonSize)
                Spacer()
            }
            Spacer()
        }
    }
}

结果:

ios - 在SwiftUI中水平居中查看-LMLPHP

07-24 18:02