9

有谁知道 SwiftUI 在坐标空间方面是如何渲染的?看起来框架的原点现在不在0, 0左上角。例如,添加Text带有修饰符的 a 会使标签偏移到视图之外。

var body: some View {
    Text("my long enough string")
      .position(CGPoint(x: 0, y: 100))
}

结果是我只能看到“ugh string”。

4

6 回答 6

8

.position(x, y) 将视图的中心定位到与父级的指定坐标。

您将需要使用 Stacks/Container 使用对齐和间隔来相对于彼此定位显示的元素。

视图总是从屏幕的中心开始。

像这样的东西:

   HStack(alignment: .top) {
        VStack(alignment: .leading) {
            Text("top left")
            Spacer()
            Text("bottom left")
        }

        Spacer()
        VStack(alignment: .leading) {
            Text("top right")
            Spacer()
            Text("bottom right")
        }
    }
于 2019-06-06T15:16:31.097 回答
2

您可以使用“填充”而不是位置。

Text("Hello World").padding(EdgeInsets.init(top: 100, leading: 0, bottom: 0, trailing: 0))
于 2019-06-05T00:08:20.997 回答
2

根据函数的文档position(x:y:)

  • x:放置此视图中心的 x 坐标。
  • y:放置此视图中心的 y 坐标。

这会将文本的中心固定在超级视图的中心。

您还可以使用以下padding()功能

Text("my long enough string").padding(.top, 20)
于 2019-06-19T05:40:00.537 回答
1

iOS 上的坐标空间有 0, 0 在左上角。您的文本被截断,因为position属性:“将视图的中心固定在其父级坐标空间中的指定点。”</p>

于 2019-06-04T18:41:04.183 回答
0

您还可以使用.offset修改器相对于左上角偏移视图。如果您使用它,请注意效果可能会根据修饰符的顺序而大不相同。

于 2020-03-11T00:57:57.370 回答
0

将此视图的中心固定在其父坐标空间中的指定点。

于 2021-06-01T06:43:50.340 回答