如何在溢出屏幕的 SwiftUI 中制作无限宽度的视图?

Posted

技术标签:

【中文标题】如何在溢出屏幕的 SwiftUI 中制作无限宽度的视图?【英文标题】:How to make a unlimited width view in SwiftUI that overflow the screen? 【发布时间】:2021-06-06 10:49:34 【问题描述】:

我将ForEach 放入HStack 中。我希望ForEach 中的每个元素都保持其原始宽度,并且父HStack 应该根据需要溢出屏幕。但是,这会导致父 HStack 适合屏幕的宽度,并且 ForEach 内的每个元素都会缩小为 1/n * screenWidth

示例代码:

HStack(alignment: .bottom) 
  ForEach(data, id: \.id)  element in
    SomeView(data: element)
  

我可以通过将父 HStack 放在 ScrollView 中来实现类似的效果。但是如果我不想要滚动行为怎么办?我想知道ScrollView 是如何实现这个无限宽的?

【问题讨论】:

如果你不想要滚动行为,你想要什么?只是要裁剪的最后一个可见视图?你的问题不清楚。 【参考方案1】:

无论你想达到什么目的,这样做都会破坏用户界面。

以图像为例,将其放入 VStack 中,不要使其可调整大小。它会溢出视图。您放置在该 VStack 中的任何内容也会溢出,并且不会在屏幕边界内对齐。

因此,最好的办法是使用 ScrollView 并禁用滚动,如下所述:How to only disable scroll in ScrollView but not content view?

【讨论】:

虽然该链接可能会回答您应该在答案部分发布相关代码的问题。链接随着时间的推移而中断,导致答案过时。

以上是关于如何在溢出屏幕的 SwiftUI 中制作无限宽度的视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决无限像素溢出的底部?

SwiftUI当总内容宽度小于屏幕宽度时,如何在动态水平滚动视图中居中内容

SwiftUI如何对齐大于屏幕宽度的视图

如何使视图最大。 SwiftUI 中带填充的宽度

我的导航栏显示了太多项目和溢出。如何在更高的屏幕宽度下折叠它? [复制]

SwiftUI如何制作圆角和屏幕底部上方的hstack?