繁体   English   中英

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

[英]How do I pin a view to the edges of a screen?

如何使用SwiftUI将视图(在本例中为标签/文本)固定到屏幕边缘? 对于 Storyboards,我只会使用AutoLayout但在SwiftUI不可用。

在此处输入图片说明

你可以做这样的事情

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

VStack Spacer将确保HStack位于顶部, HStack Spacer将确保Text一直在左侧。 您也可以通过对齐来解决这个问题。

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

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

如果有人在这里找到一种从顶部固定视图x 点的方法,您可以这样做:

VStack {
        Spacer()
            .frame(height: 40)
        Text("Space me")
        Spacer()
    }

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

在您的视图上使用此修饰符

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM