SwiftUI篇-3 排版布局layout

作者: 浪人残风 | 来源:发表于2021-02-26 10:17 被阅读0次

摘要
swiftUI提供的layout有:
ZStack、GeometryReader、HStack、LazyVGrid、LazyHStack、LazyHGrid、LazyVStack、VStack、Spacer、ScrollViewReader等


image.png

HStack 水平横向布局容器,子view按顺序水平排列

            HStack(alignment: .center, spacing: 10) {
                          Text("横向布局 text1").padding(10)
                          Text("横向布局 text1").padding(10)
                          
                      }.border(Color.blue, width: 1)

VStack 垂直纵向布局容器,子view按顺序垂直排列

            VStack(alignment: .trailing, spacing: 10) {
                          Text("纵向布局 text1").padding(10)
                          Text("纵向布局 text1").padding(10)
                      }.border(Color.blue, width: 1)

ZStack 覆盖布局容器,后面的子view会盖住前面的子view

            ZStack(alignment: .center, content: {
                           Image("silversalmoncreek")
                            Text("覆盖布局").foregroundColor(.red)
            })

GeometryReader 可以获取到父view分配给它的size

            GeometryReader { geometry in
                Text("GeometryReader , width:\(geometry.size.width) height:\(geometry.size.height)")
            }
image.png

LazyHStack、LazyVStack:一行或一列显示完子view,需要显示时才渲染

            Section(header: Text("水平一行显示完,需要显示时才渲染")) {
                LazyHStack(alignment: .top, spacing: 10) {
                       ForEach(1...5, id: \.self) {
                           Text("Column \($0)")
                       }
                   }
            }
            Section(header: Text("垂直一列显示完,需要显示时才渲染")) {
                LazyVStack(alignment: .leading) {
                    ForEach(1...5, id: \.self) {
                        Text("Row \($0)")
                    }
                }
            }
image.png

Space 使用了Spacer则会占据剩余控件

            HStack{
                Text("北宋")
                Text("北宋")
                // 使用了Spacer则HStack会占据剩余的控件
                Spacer()
            }.background(Color.orange).padding(.bottom,10)
            
            HStack{
                Text("北宋")
                Text("北宋")
                // 没使用Spacer则HStack不会占据剩余的控件
                
            }.background(Color.orange)
image.png

源码下载

相关文章

网友评论

    本文标题:SwiftUI篇-3 排版布局layout

    本文链接:https://www.haomeiwen.com/subject/vicufltx.html