iOS 13 SwiftUI 指南
布局方向
VStack 垂直布局
默认垂直方向居中布局
1 | VStack { |
对齐方向参数可选(.leading
,.trailing
,.center
)
1 | VStack(alignment:.leading) { |
HStack 水平布局
默认水平方向居中布局
1 | HStack { |
对齐方向参数可选(.top
,.bottom
,.center
)
1 | HStack(alignment:.bottom) { |
ZStack 前后布局
代码下面内容的盖住上面的内容
默认水平居中&垂直居中
1 | ZStack { |
对齐方向参数可选(.leading
,.trailing
,.top
,.bottom
,.topLeading
,.topTrailing
,.bottomLeading
,.bottomTrailing
)
1 | ZStack(alignment:.bottom) { |
Padding
内边距,用来撑开你的布局
默认撑开上下左右各16pt
1 | ZStack{ |
可以指定哪个位置撑开和数值大小
1 | ZStack{ |
1 | ZStack{ |
1 | ZStack{ |
1 | ZStack{ |
Spacer
用来填充空位。
因为SwiftUI不像原来的UI开发,是先设置好frame,再往里面添加东西,相反,他是一种先紧紧包住控件,然后通过padding、spacer等元素去“撑开”视图的思想。所以,Spacer在这里有点类似于UIBarButtonItem里的那个UIBarButtonSystemItemFlexibleSpace
,就是把东西给撑开。
举个例子
水平界面这时候布局紧紧包裹着Text控件
1 | HStack { |
如果这时候加一个Spacer,那么Text控件就会靠左,右边部分会被Spacer把剩余空隙填满
1 | HStack { |
同理如果是VStack
,写在下面的话,自然就会把Text控件往上顶,然后把剩余屏幕部分填满。
Image
直接输入图片名就可以引用本地图片Image("bg_nuanxin_mask")
resizeable
Image("bg_nuanxin_mask").resizable()
把图片撑开
隐藏NavigationBar
1 | NavigationView { |
这个界面不显示,下个界面要显示导航栏
当前页面声明一个属性
1 | private var navBarHidden = true |
目标页面加一个属性
1 | var navBarHidden : Bool |
传值过去
1 | NavigationLink(destination:xxxx, navBarHidden: $navBarHidden)) { |
目标页面处理
1 | var body: some View { |
导航栏标题样式
普通
1 | .navigationBarTitle(Text(title),displayMode: .inline) |
特大
1 | .navigationBarTitle(Text(title),displayMode: .large) |
随滚动自动变化
1 | .navigationBarTitle(Text(title),displayMode: .automatic) |
需要用到的一些快捷键
cmd + ctrl + 鼠标左键+控件/布局 = 调出菜单
ctrl + i = 代码缩进调整
待续