首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在窗体中居中对齐节项目

如何在窗体中居中对齐节项目
EN

Stack Overflow用户
提问于 2020-12-21 08:01:43
回答 1查看 100关注 0票数 1

我试图在一个部分内居中对齐一组视图,但我得到的只是引导对齐。我尝试使用VStack而不是HStack,并使用.frame(width: ..., alignment: .center),但这些都不适用于我。如果我用Text替换ScrollView,那么它就可以工作。我使用的是Xcode12.3和iOS 14.3。

代码语言:javascript
复制
struct TestSectionAlign : View {
    var body : some View {
        Form {
            Section(header: Text("background color")) {
                viewForBackgroundColor
            }
        }
    }
    var viewForBackgroundColor : some View {
        HStack {
            Spacer()
            ScrollView.init(.horizontal, showsIndicators: false) {
                HStack {
                    Spacer()
                    ForEach(0..<15) { i in
                        Button(action: {
                            // do something
                        }) {
                            Image(systemName: "circle.fill").foregroundColor(Color.init(white: Double(i)/16.0))
                        }
                        .buttonStyle(PlainButtonStyle()) 
                    }
                    Spacer()
                }
            }
            Spacer()
        }
    }
}

EN

回答 1

Stack Overflow用户

发布于 2020-12-21 08:32:05

这是一个使用GeometryReader的解决方案,然后手动设置HStack的宽度并将其居中对齐

代码语言:javascript
复制
struct ContentView : View {
    var body : some View {
        Form {
            Section(header: Text("background color")) {
                viewForBackgroundColor
            }
        }
    }
    var viewForBackgroundColor : some View {
        GeometryReader { geometry in
            HStack(alignment: .center) {
                ScrollView.init(.horizontal, showsIndicators: false) {
                    HStack(alignment: .center) {
                        ForEach(0..<15) { i in
                            Button(action: {
                                // do something
                            }) {
                                Image(systemName: "circle.fill").foregroundColor(Color.init(white: Double(i)/16.0))
                            }
                            .buttonStyle(PlainButtonStyle())
                        }
                    }.frame(width: geometry.size.width, height: geometry.size.height, alignment: .center) //<< here now center
                }
            }.border(Color.red)
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65386038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档