gridview - 如何使 SwiftUI 文本多行文本对齐从顶部和中心开始

标签 gridview swiftui android-gravity lazyvgrid

enter image description here
如何使图像和文本对齐与 SwiftUI LazyVGrid 中的其他 3 个相同,如下图所示?
我认为问题是如果文本是多行的,如何使文本从顶部开始。在 Android 中我可以使用 Gravity="top|center"但在 SwiftUI 中我使用 .multilineTextAlignment(.center) 但结果不像我预期的那样。
enter image description here
这是我在代码中尝试的内容:

      LazyVGrid(columns: gridItemLayout, spacing: 0) {
          ForEach((0...7), id: \.self) { i in
               VStack {
                    RemoteImageView(url: vm.listService[i].image_uri)
                        .frame(width: 100, height: 100)
                    Text(vm.listService[i].name)
                        .font(.body)
                        .multilineTextAlignment(.center)
                        .frame(maxWidth: .infinity, alignment: .center)
               }
         }
      }
      .padding(.horizontal, 25.0)

最佳答案

对于 Text的框架,您需要:

  • 套装maxHeight.infinity ,所以它也可以垂直扩展
  • 套装alignment.top ,所以它与顶部对齐
  • let names = ["Hi", "Hello world", "Long long text"]
    
    let gridItemLayout = [
       GridItem(.adaptive(minimum: 80))
    ]
    
    var body: some View {
        
        LazyVGrid(columns: gridItemLayout, spacing: 0) {
            ForEach((0...7), id: \.self) { i in
                VStack {
                    Image(systemName: "folder")
                    .frame(width: 100, height: 100)
                    .background(Color.green)
                    Text(names.randomElement() ?? "")
                    .font(.body)
                    .multilineTextAlignment(.center)
                    
                    /// here!
                    .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
                }
            }
        }
        .padding(.horizontal, 25.0)
    }
    
    结果:
    Grid of elements composed of an Image on top of a Text. The Image's y position is always the same, while the Text expands down when it has multiple lines.

    关于gridview - 如何使 SwiftUI 文本多行文本对齐从顶部和中心开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66361758/

    相关文章:

    ios - 导航栏隐藏在 SwiftUI 中不起作用

    Android - 更改 TextInputLayout 的位置 float 标签(底部 float 标签)?

    jquery - 使用 JQuery Table Sorter 插件仅对一列进行排序

    ASP.NET GridView 如何取消更新

    android - 如何以缩略图形式显示视频网址?

    java - picasso 图像未在 Gridview Android 中加载

    swift - 以编程方式导航到 SwiftUI 中的新 View

    SwiftUI:添加元素时选择器内容未刷新

    Android:如何在启动画面上对齐 2 个图像

    android - 自定义按钮的 "android:gravity"在 styles.xml 中定义时不适用