一.三种栈堆
这三种栈堆简单来说就是各种元素的不同堆叠方式,这里最初始的vstack就省略了
就是竖直方向上的排列
1.ZStack
(垂直堆叠视图)
ZStack
是一种堆叠式布局容器,它按照视图的添加顺序在垂直于屏幕(三维空间中的 Z 轴方向)的方向上堆叠视图。就像是将一张张透明的纸片叠放在一起,后添加的视图会覆盖在前面添加的视图之上。所有子视图的位置都是相对于ZStack
的左上角为原点进行定位的,不过通常不需要精确地设置位置,因为重点是它们的堆叠顺序。例如,在一个ZStack
中先添加一个背景图片,再添加一个文本标签,文本标签就会显示在背景图片之上。当需要创建一些具有覆盖效果的界面,如在图片上添加文字、图标或者在一个视图之上添加遮罩等场景时,ZStack
非常有用。
这里我们就相当于把这个名为denglu 的图片作为背景,在最底层
而他后面的元素都会在他前面显示出来,顺序是从里到外
2.HStack
(水平排列视图)
HStack
用于水平排列子视图。子视图从左到右依次排列,HStack
会根据子视图的大小自动调整自身的宽度,以容纳所有子视图。和VStack
一样,它也可以设置子视图之间的间距(通过spacing
属性)。例如,在一个HStack
中添加几个图标,它们会在水平方向上依次排列。常用于创建工具条、导航栏等水平方向的布局。例如,在一个简单的图片编辑应用的导航栏中,可以使用HStack
来排列返回按钮、标题和分享按钮等。
比如这里我要将微信和QQ的图标水平排列,最后的效果就是这样
二.滚动视图
当我们的视图太大导致无法在一个页面看完时,我们就需要用到滚动视图ScrollView
ScrollView
是 SwiftUI 中用于创建可滚动视图的容器。当视图中的内容超出了屏幕所能显示的范围时,使用ScrollView
可以让用户通过滚动操作(比如上下滑动或者左右滑动,取决于ScrollView
的滚动方向设置)来查看全部的内容
这里我就将我的主页面设置为了滚动视图
除了竖直方向上的滚动
我们还可以将其设置为水平滚动
.horizontal就是将它设置为水平滑动的修改器
showsIndicators: false 这个东西是我们用来隐藏滑动条的
三.颜色改变(结构体)
当我们想要点击后给用户一个反馈,我们就要将这个按钮的颜色改变
注意看这里的按钮的主要元素都相同,不同的就是文本内容
所以这里我们就可以定义一个结构体
我们将文本设置为变量,然后把我们需要的背景颜色和文字颜色设置好
重要的是button的内容
我们定义了一个bool类型的变量,当我们点击按钮时,a的值反转,颜色改变
在主视图中我们就可以这样调用这个结构体了,操作简单的同时也可以让你的代码更加清晰简洁
四.疑惑
在第三页中,我需要一个横着滑动的菜单栏,并且当我点击一个选项,其他的选项变为灰色,点击中的变为黑色
我定义了一个bool数组,第一个值默认为被点击的状态
在这段函数中我本来是想将颜色设置为
.foregroundColor(choose[index]?Color.black: Color.gray )
这样我就能控制 他的颜色
但是他就会报错,代码界面也没显示错误原因