【问题标题】:SwiftUI VStack not center objectsSwiftUI VStack 不居中对象
【发布时间】:2020-09-10 11:28:32
【问题描述】:

我不知道为什么,但 VStack 不会突然居中图像或文本。我尝试使用VStack(alignment:.center),但没有成功。

struct ContentView: View {

    var body: some View {
        NavigationView {
          GeometryReader { geo in
           Group{
            VStack() {
                Image(systemName: "car.fill")
            }
          }
         }
       }
    }
}

我的理解是这应该居中。至少所有文件都说它应该居中。

【问题讨论】:

    标签: swiftui


    【解决方案1】:

    它以VStack 为中心,但VStack 不以GeometryReader 为中心。您可以执行以下操作...

      GeometryReader { geo in
        VStack {
            Image(systemName: "car.fill")
        }
        .frame(width: geo.size.width, height: geo.size.height)
      }
    

    【讨论】:

    • 是否有文档说明为什么 GeometyReader 会发生这种情况?还是其他事情也会发生这种情况?最佳实践是否应该总是说您应该在 VStack 或任何对象上放置一个框架?很抱歉这些问题,只是想了解为什么这个答案有效。
    • GeometryReader 没有自己的对齐方式,它只是一个free space,左上角有 0,0,所以你可以随心所欲地填充它,如果你想填充它完全有一些对齐,制作一些需要对齐的 *stack,如果你想通过坐标在其中自定义对齐,你可以使用 .position 使用过的视图等来做到这一点。
    • 我的问题不完全是这个,但这也解决了我的居中问题!谢谢!所以我只有一个带有 VStack 的视图,并且在一个带有两个 Spacer 的图像内。即使禁用状态栏和忽略安全区域,VStack 似乎也无法正确获得屏幕全尺寸!
    【解决方案2】:

    只需使用 HStack 将 VStack 居中。

    struct ContentView: View {
    
    var body: some View {
        NavigationView {
          GeometryReader { geo in
           Group{
            HStack {
                Spacer()                
                VStack() {
                    Image(systemName: "car.fill")
                }
                Spacer()
            }
          }
         }
       }
    }
    

    }

    struct ContentView: View {
    
    var body: some View {
        NavigationView {
          GeometryReader { geo in
           Group{
            VStack() {
                HStack {
                    Spacer()
                    Image(systemName: "car.fill")
                    Spacer()
                }
            }
          }
         }
       }
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2020-10-29
      • 1970-01-01
      • 2020-05-16
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2021-02-18
      相关资源
      最近更新 更多