如何将视图固定在屏幕边缘?

时间:2019-06-08 21:28:44

标签: ios swift swiftui

如何使用SwiftUI将视图(在这种情况下为标签/文本)固定到屏幕的边缘?使用情节提要,我只会使用AutoLayout,但SwiftUI则无法使用。

enter image description here

4 个答案:

答案 0 :(得分:2)

您可以这样做

    VStack {
        HStack {
            Text("Label")
            Spacer()
        }
        Spacer()
    }
Spacer中的

VStack将确保HStack在顶部,Spacer中的HStack将确保Text一直存在向左转。您也可以通过对齐方式解决此问题。

答案 1 :(得分:1)

如果有人在这里找到从顶部固定视图 x个点的方法,则可以执行以下操作:

Mock

您将需要两个垫片。如果您来自自动布局,这可能有点违反直觉,但实际上非常方便。 VStack底部的间隔物将从默认(即居中)y位置向顶部“推动” VStack视图,直到遇到阻力(默认为安全区域的顶部边缘)为止。然后,您可以使用顶部间隔器将静止点向下推x点,从而获得与“自动布局”的顶部约束类似的效果。

答案 2 :(得分:0)

在视图上使用此修饰符

  .frame(minWidth: 0, maxWidth: .infinity,
         minHeight: 0, maxHeight: .infinity)

SwiftUI使用任何视图所需的最小空间,要增加它,您可以根据情况使用不同的方法。 也可以使用relativeSize()修饰符,但是当它起作用时我还没弄懂

答案 3 :(得分:0)

您可以将主要内容包装在一个名为GeometryReader的特殊容器中。它的默认大小与其父级相同,因此,如果它是根视图,它将把内容固定到屏幕边缘,例如AutoLayout。

GeometryReader { in geometry
    YourContentView().frame(width: geometry.size.width, height: geometry.size.height)
}