【问题标题】:How to set alignment in main body view?如何在主体视图中设置对齐方式?
【发布时间】:2019-06-20 23:26:20
【问题描述】:

我正在尝试将第一个正文视图中的 Image 对齐到顶部,但找不到执行此操作的方法。我想将对齐设置为.top,就像您在ZStack 中所做的那样,如下所示:

ZStack(alignment: .top) {
    Image("imagename")
    Text("Test")
}

在此代码中,图像前面的文本将位于顶部。我该怎么做,但图像是正文视图,文本是图像。

【问题讨论】:

  • 只是为了了解你想要什么,从 X、Y 和 Z 的角度来思考 - 一个常见的编码场景。 X是水平的,Y是垂直的,Z?可能最好将其描述为。考虑到这一点,您是希望将图像放在正文中其他元素的顶部(或上方),还是其他元素的顶部?如果是前者,我们可能需要知道身体里还有什么。

标签: swift swiftui


【解决方案1】:

GeometryReader (read more here) 的另一种用途!

    var body: some View {
        GeometryReader { geometry in
            VStack(alignment: .center) {
                Image(systemName: "person")
                }.frame(width: geometry.size.width, alignment: .top)
        }
    }

【讨论】:

  • 谢谢!这正是我想要的。我目前正在观看 SwiftUI 的 WWDC 教程,但必须阅读有关这些功能的更多信息。
【解决方案2】:

另一种选择是使用 Spacer。

var body: some View {

  VStack(alignment: .center) {
      Image(systemName: "person")
      Spacer()   
  }

}

我实际上写了一个blog post 来介绍如何使用 Spacer 创建相当复杂的布局。

【讨论】:

  • 这也有效!很高兴知道所有不同的选项,但我认为 Apple 应该实施一种更简单的方法来做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
相关资源
最近更新 更多