# 物件排列方式(VStack、HStack、ZStack)
## 筆記大綱
頁面左邊可以快速查看內容
- VStack 直向排列
- HStack 橫向排列
- ZStack 向上堆疊
<br/>
### VStack 直向排列 [developer.apple.com](https://developer.apple.com/documentation/swiftui/vstack)
只要包含在VStack中的View,就會是直向排列。直接來看簡單範例:
:::info
**範例程式碼**
```swift=
struct ContentView: View{
var body: some View{
VStack{
Text("第一行")
Text("第二行")
Text("第三行")
Text("第四行")
Text("第五行")
}
}
}
```
**虛擬機實際畫面**
Image
:::
而VStack可以結合aligement(對齊方式)和spacing(間隔,單位為px)使用。按照習慣可以有兩種寫法,沒有很大的差別,以自己習慣的閱讀方式為主,讓我們看看範例:
以下範例為VStack置中對齊,每個View間距10px。
```swift=
VStack(aligement: .center, spacing: 10){
//View
}
```
```swift=
VStack(
aligement: .center,
spacing: 10
){
//View
}
```
:::spoiler {state="open"} VStack中的aligement對齊方式
因爲已經是直向排列了,所以不會有向上對齊或向下對齊(對重疊在一起),因此只有三個:
* .leading 向左對齊
* .center 置中對齊
* .trailing 向右對齊
:::
<br/>
### HStack 橫向排列 [developer.apple.com](https://developer.apple.com/documentation/swiftui/hstack)
只要包含在HStack中的View,就會是橫向排列。直接來看簡單範例:
:::warning
**範例程式碼**
```swift=
struct ContentView: View{
var body: some View{
VStack{
Text("第一列")
Text("第二列")
Text("第三列")
Text("第四列")
Text("第五列")
}
}
}
```
**虛擬機實際畫面**
Image
:::
而HStack同樣可以結合aligement(對齊方式)和spacing(間隔,單位為px)使用。按照習慣可以有兩種寫法,沒有很大的差別,以自己習慣的閱讀方式為主,讓我們看看範例:
以下範例為HStack置中對齊,每個View間距10px。
```swift=
HStack(aligement: .center, spacing: 10){
//View
}
```
```swift=
HStack(
aligement: .center,
spacing: 10
){
//View
}
```
:::spoiler {state="close"} HStack中的aligement對齊方式
因爲已經是橫向排列了,所以不會有向左對齊或向右對齊(對重疊在一起),因此只有三個:
* .top 向上對齊
* .center 置中對齊
* .bottom 向下對齊
:::
<br/>
### ZStack 向上堆疊 [developer.apple.com](https://developer.apple.com/documentation/swiftui/zstack)
只要包含在ZStack中的View,就會是向上堆疊。行數越小的View會在下面,行數增加,View會像堆疊在上一個View上。直接來看簡單範例:
:::success
**範例程式碼**
```swift=
struct ContentView: View{
var body: some View{
VStack{
Text("這是中文")
Text("This is English")
Text("123456789")
}
}
}
```
**虛擬機實際畫面**
Image
:::
{"title":"物件排列方式(VStack、HStack、ZStack)","description":"VStack 直向排列","contributors":"[{\"id\":\"57943794-cfe8-43f8-bb68-956a9c60e610\",\"add\":2366,\"del\":269}]"}