相关疑难解决方法(0)

带 Wrap 的 SwiftUI HStack

是否有可能完全显示蓝色标签(当前被截断)然后自动换行?

NavigationLink(destination: GameListView()) {
  VStack(alignment: .leading, spacing: 5){
    // Name der Sammlung:
    Text(collection.name)
      .font(.headline)

    // Optional: Für welche Konsolen bzw. Plattformen:
    HStack(alignment: .top, spacing: 10){
      ForEach(collection.platforms, id: \.self) { platform in
        Text(platform)
          .padding(.all, 5)
          .font(.caption)
          .background(Color.blue)
          .foregroundColor(Color.white)
          .cornerRadius(5)
          .lineLimit(1)
      }
    }
  }
  .padding(.vertical, 10)
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

此外,蓝色标签中不应有换行符:

在此处输入图片说明

这就是它最终的样子:

在此处输入图片说明

ios swift swiftui hstack

36
推荐指数
5
解决办法
1万
查看次数

如何使用LazyVGrid或LazyHGrid根据大小获取显示内容?

是否可以使用 LazyVGrid 或 LazyHGrid 来获得这样的视图?

在此输入图像描述

文本值在框中呈现,如果右边框附近没有更多空间,则从下一行开始。

我尝试过使用 LazyGrids 但似乎因为我需要给出最小列宽

LazyVGrid(columns: [
   GridItem(.adaptive(minimum: 60)),
],
Run Code Online (Sandbox Code Playgroud)

文本被截断。有什么办法可以使用网格来完成上图中的视图吗?

swiftui

11
推荐指数
0
解决办法
5185
查看次数

在 SwiftUI 中实现标签列表

我正在尝试在 SwiftUI 中实现一个标签列表,但是如果列表水平溢出,我不确定如何让它将标签包装到其他行。我从一个名为 tags 的字符串数组开始,然后在 SwiftUI 中循环遍历该数组并创建按钮,如下所示:

HStack{
    ForEach(tags, id: \.self){tag in
        Button(action: {}) {
            HStack {
                Text(tag)
                Image(systemName: "xmark.circle")
            }
        }
        .padding()
        .foregroundColor(.white)
        .background(Color.orange)
        .cornerRadius(.infinity)
        .lineLimit(1)
    }
}
Run Code Online (Sandbox Code Playgroud)

如果标签数组很小,则呈现如下: 在此处输入图片说明

但是,如果数组有更多值,它会这样做:

在此处输入图片说明

我正在寻找的行为是将最后一个标签(黄色)包装到第二行。我意识到它在 HStack 中,我希望我可以添加对 lineLimit 的调用,其值大于 1,但它似乎没有改变行为。如果我将外部 HStack 更改为 VStack,它会将每个 Button 放在单独的行上,因此仍然不是我尝试创建的行为。任何指导将不胜感激。

swiftui

10
推荐指数
2
解决办法
5066
查看次数

SwiftUI LazyGrid 动态列宽

如何使 Grid 项目宽度动态化,以便它采用文本的宽度?

使用下面的代码截断文本,考虑到可变文本长度,我希望所有文本都显示而不被截断。

struct ContentView: View {
    
    let data = ["O Menino","The Boy", "The Girl", "A Menina","Mae","Mother"]
    
    let layout = [
        GridItem(.adaptive(minimum:50))
        
    ]
    
    var body: some View {
       
        ScrollView{
            LazyVGrid(columns: layout, spacing: 20){
                ForEach(data, id: \.self){ item in
                    VStack{
                        Text(item).lineLimit(1)
                    }.background(Color.red)
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

swiftui

8
推荐指数
1
解决办法
2619
查看次数

SwiftUI:在 LazyVGrid 中显示可变长度字符串

我正在尝试构建一个垂直的字符串网格,这些字符串具有可变的长度,可以并排显示(例如社交媒体标签的集合),如下所示:

struct ContentView: View {
    let data = ["first text",
    "second text",
    "long text for testing",
    "short",
    "some medium text"
    ]
    let gridItem = GridItem(.adaptive(minimum: 40, maximum: 300))
    var body: some View {
        ScrollView {
            LazyVGrid(columns: [gridItem]) {
                ForEach(data, id:\.self) { item in
                    Text(item)
                        .lineLimit(1)
                        .background(Color.red)
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但问题LazyVGrid是它与初始化程序中定义的最小项目宽度相关,这不允许它动态适应每个项目的宽度。

上述代码的结果是:

在此输入图像描述

我的问题是:如何在 SwiftUI 的垂直滚动视图中显示任何可变长度字符串的动态列表?

ios swift swiftui lazyvgrid

6
推荐指数
0
解决办法
1789
查看次数

标签 统计

swiftui ×5

ios ×2

swift ×2

hstack ×1

lazyvgrid ×1