0

我是 Swift UI 的新手。我一直在使用故事板。我被困在 swiftUI 的一个地方。你们中的一位能否解释一下如何在 swiftUI 中证明文本的合理性?我提到了几个链接,但它们没有多大帮助。

SwiftUI:对齐文本

请帮忙!我被困在这非常糟糕

4

1 回答 1

0

关于 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 不同。尝试所有不同的修改对齐方式。它会随着时间的推移自然而然地出现,我会说一周左右。

小费

文本视图只占用堆栈中所需的空间量。堆栈将仅与该轴上的最大元素一样宽或高。例如 aText("A")和a 的Text("ABCDEFG")内部VStack将具有第二个的宽度和两者的高度。在使用视图时,您应该牢记这一点。有多种方法可以使用GeometryReader.frame(...)修饰符将堆栈设置为不同的宽度/高度。我将省略这些答案。

于 2021-04-22T15:15:50.040 回答