关于 swift 需要记住的重要一点是,视图通常以堆栈形式排列,主要是 V 和 H 堆栈。您可以使用这些堆栈随意移动文本。现在,您可能遇到的一个常见问题是堆栈没有您期望的那么宽,您可以使用诸如minimumFontScale 等修饰符来修复它。为了便于说明,我将向您展示用于根据需要对齐文本的常用结构。
水平对齐,视图中心
VStack {
Spacer() // Disable for Top Left/Right
HStack {
Spacer() //Disable for Left Align
Text("Test")
Spacer() //Disable for Right Align
}
Spacer() // Disable for Bottom Left/Right
}
注意VStack 有两个垫片将嵌套的HStack 居中。然后HStack 有间隔对齐到视图的左侧或右侧。
垂直对齐,视图中心
HStack {
Spacer() //Disable for Left, Top/Bottom
VStack {
Spacer() //Disable for Top Align
Text("Test")
Spacer() //Disable for Bottom Align
}
Spacer() //Disable for Right, Top/Bottom
}
这个将文本放在中间,并允许您上下移动它。您应该能够查看这些结构并了解如何操纵它来移动您的视图。
其他操作对齐方式
VStack(alignment: .leading) {} //Leading and Trailing alignments.
HStack(alignment: .top) {} //Top and Bottom alignments.
//A Modifier directly on the view, where you could get the width
//and height from anything you want. Alignments could be.
// .leading, .trailing, .bottom, .top, .topleading, .topTrailing
// .bottomLeading, .bottomTrailing
Text("YourText").frame(width: 300, height: 300, alignment: .topLeading)
使用这些类型的修饰符可以设置您的视图,使其比上述解决方案更干净,并且在处理可能具有组/部分的复杂 UI 时变得特别有用。嵌套堆栈的修饰符可以添加到其父堆栈修饰符中。为您找到解决方案的最佳方式可能与其他人的 UI 不同。尝试所有不同的修改对齐方式。它会随着时间的推移自然而然地出现,我会说一周左右。
提示
文本视图只占用堆栈中所需的空间。堆栈将仅与该轴上的最大元素一样宽或高。例如,VStack 内部的 Text("A") 和 Text("ABCDEFG") 将具有第二个的宽度和两者的高度。在使用视图时,您应该牢记这一点。有一些方法可以使用 GeometryReader 和 .frame(...) 修饰符将堆栈设置为不同的宽度/高度。我将省略这些答案。