如何将视图固定到屏幕边缘?
How do I pin a view to the edges of a screen?
如何使用 SwiftUI
将视图(在本例中为 label/text)固定到屏幕边缘?对于情节提要,我只会使用 AutoLayout
但 SwiftUI
.
不可用
在您的视图中使用此修饰符
.frame(minWidth: 0, maxWidth: .infinity,
minHeight: 0, maxHeight: .infinity)
SwiftUI 对任何视图使用最低需要 space,要增加它,您可以根据情况使用不同的方法。
也可以使用 relativeSize() 修饰符,但我还没有得到它的工作时间
您可以将主要内容包装在一个名为 GeometryReader
的特殊容器中。它的默认大小与其父视图相同,因此如果它是根视图,它将像 AutoLayout 一样将内容固定到屏幕边缘。
GeometryReader { in geometry
YourContentView().frame(width: geometry.size.width, height: geometry.size.height)
}
你可以这样做
VStack {
HStack {
Text("Label")
Spacer()
}
Spacer()
}
Spacer
in VStack
将确保 HStack
在顶部,Spacer
in HStack
将确保 Text
全部他们向左走。你也可以通过对齐来解决这个问题。
如果有人在这里想办法从顶部固定视图 x 点,您可以这样做:
VStack {
Spacer()
.frame(height: 40)
Text("Space me")
Spacer()
}
你需要两个垫片。如果您来自自动布局,这可能有点违反直觉,但实际上非常方便。 VStack 底部的垫片 "push" 您的 VStack 视图从默认(即居中)y 位置朝向顶部,直到它遇到阻力——默认情况下是安全区域的顶部边缘。然后,您可以使用顶部间隔器将静止点向下推 x 点,产生与自动布局的顶部约束类似的效果。
如何使用 SwiftUI
将视图(在本例中为 label/text)固定到屏幕边缘?对于情节提要,我只会使用 AutoLayout
但 SwiftUI
.
在您的视图中使用此修饰符
.frame(minWidth: 0, maxWidth: .infinity,
minHeight: 0, maxHeight: .infinity)
SwiftUI 对任何视图使用最低需要 space,要增加它,您可以根据情况使用不同的方法。 也可以使用 relativeSize() 修饰符,但我还没有得到它的工作时间
您可以将主要内容包装在一个名为 GeometryReader
的特殊容器中。它的默认大小与其父视图相同,因此如果它是根视图,它将像 AutoLayout 一样将内容固定到屏幕边缘。
GeometryReader { in geometry
YourContentView().frame(width: geometry.size.width, height: geometry.size.height)
}
你可以这样做
VStack {
HStack {
Text("Label")
Spacer()
}
Spacer()
}
Spacer
in VStack
将确保 HStack
在顶部,Spacer
in HStack
将确保 Text
全部他们向左走。你也可以通过对齐来解决这个问题。
如果有人在这里想办法从顶部固定视图 x 点,您可以这样做:
VStack {
Spacer()
.frame(height: 40)
Text("Space me")
Spacer()
}
你需要两个垫片。如果您来自自动布局,这可能有点违反直觉,但实际上非常方便。 VStack 底部的垫片 "push" 您的 VStack 视图从默认(即居中)y 位置朝向顶部,直到它遇到阻力——默认情况下是安全区域的顶部边缘。然后,您可以使用顶部间隔器将静止点向下推 x 点,产生与自动布局的顶部约束类似的效果。