有没有可能蓝色标签(当前被截断)被完整显示,然后自动换行?
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)
}
此外,蓝色标签中不应有换行符:
最后应该是这样的:
7条答案
按热度按时间bqf10yzr1#
下面是一些使用alignmentGuide(s)来实现这一点的方法。它被简化以避免许多代码发布,但希望它是有用的。
这就是结果:
下面是完整的演示代码(自动支持方向):
6tdlim6h2#
对我来说,没有一个答案起作用。要么是因为我有不同类型的元素,要么是因为周围的元素没有被正确定位。因此,我最终实现了我自己的WrappingHStack,它的使用方式与HStack非常相似。你可以在GitHub: WrappingHStack找到它。
下面是一个示例:
代码:
z31licg03#
我以前创造你需要的东西。
我在
VStack
中使用了HStack
。传入一个用于确定最大行宽的
geometryProxy
。我传入这个参数是为了使它在scrollView中可用我将SwiftUI视图 Package 在UIHostingController中,以获得每个子视图的大小。
然后,循环遍历视图,将它们添加到行中,直到达到最大宽度,在这种情况下,我开始添加到新行中。
这只是初始化和最后阶段,组合并输出VStack中的行
奇迹就发生在这里
这是我用的扩展名
您可以在此处查看完整代码和一些示例:https://gist.github.com/kanesbetas/63e719cb96e644d31bf027194bf4ccdb
toe950274#
我有一些类似的代码(相当长),在简单的场景中它工作正常,但是在与几何阅读器的深度嵌套中它不能很好地传播它的大小。
如果这个视图像Text()一样扩展父视图内容,那么 Package 和流动就很好了,但是它似乎显式地设置了它相对于父视图的高度。
https://gist.github.com/michzio/a0b23ee43a88cbc95f65277070167e29
下面是代码中最重要的部分(没有预览和测试数据)
evrscar25#
我遇到了同样的问题,为了解决它,我将对象项目传递给一个函数,该函数首先为项目创建视图,然后通过UIHostController,我将根据项目宽度计算下一个位置。然后,项目视图由函数返回。
klsxnrf16#
iOS 16有一个新的
Layout
协议,非常适合这个任务,我写了一个具有换行行为的library,它可以处理不同类型的子视图和对齐参考值。bkkx9g8r7#
你需要在文本视图之后处理行配置。如果你需要多行,不要使用lineLimit(1)。