相关疑难解决方法(0)

根据其元素动态调整 GeometryReader 高度

我正在尝试做一些在我脑海中非常直接的事情。

我想要一个 VStack 的子视图根据其内容动态更改其高度(下面示例中的 ProblematicView)。

它通常工作得很好,但在这种情况下, ProblematicView 包含一个 GeometryReader (以模拟多行的 HStack)。

但是, GeometryReader 贪婪地占用所有空间(如果您删除 GeometryReader 及其内容,则会发生预期的行为)。不幸的是,在父视图(下面示例中的 UmbrellaView)上,UmbrellaView VStack 将自身的 50% 分配给 ProblematicView,而不是显示视图内容的最小尺寸。

我花了几个小时玩 min/ideal/maxHeight 框架参数,但无济于事。

我想要实现的目标可行吗?

我在底部添加了图片以在视觉上澄清。

struct UmbrellaView: View {
    var body: some View {
        VStack(spacing: 0) {
            ProblematicView()
            .background(Color.blue)

            ScrollView(.vertical) {
                Group {
                    Text("A little bit about this").font(.system(size: 20))
                    Divider()
                }
                Group {
                    Text("some").font(.system(size: 20))

                    Divider()
                }
                Group {
                    Text("group").font(.system(size: 20)).padding(.bottom)
                    Divider()
                }
                Group {
                    Text("content").font(.system(size: 20))
                }
            }

        }
    }
}


struct ProblematicView: View {

    var body: …
Run Code Online (Sandbox Code Playgroud)

swiftui

8
推荐指数
2
解决办法
1730
查看次数

SwiftUI ScrollView VStack GeometryReader 高度被忽略

我想在 VStack 之外使用 ScrollView,这样当 VStack 扩展超出屏幕尺寸时我的内容就可以滚动。现在我想GeometryReader在 VStack 中使用,它会导致问题,我只能通过设置 GeometryReader 框架来解决,考虑到我使用阅读器来定义视图大小,这并没有真正帮助我。

这是没有 ScrollView 的代码,它工作得很好:

struct MyExampleView: View {
  var body: some View {
    VStack {
        Text("Top Label")
            .background(Color.red)
        
        GeometryReader { reader in
            Text("Custom Sized Label")
                .frame(width: reader.size.width, height: reader.size.width * 0.5)
                .background(Color.green)
        }
        
        Text("Bottom Label")
            .background(Color.blue)
    }
    .background(Color.yellow)
  }
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下图像:

没有滚动视图

自定义尺寸的标签应为全宽,但高度为宽度的一半。现在,如果我将相同的代码包装在 ScrollView 中,就会发生这种情况:

带滚动视图

不仅所有东西都变小了,而且自定义尺寸标签的高度也被忽略了。如果我设置 GeometryReader 的高度,我可以调整该行为,但我希望 GeometryReader 的大小与其内容一样大。我怎样才能实现这个目标?

谢谢

swiftui geometryreader

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

SwiftUI - 在视图之间绘制(弯曲)路径

用非常基本的术语来说,在我的 Android 应用程序中,我有一个屏幕可以绘制圆圈,然后用曲线将它们连接起来。

我需要的草图

我正在尝试在 SwiftUI 中重新创建它。

我发现这个问题看起来与我正在寻找的问题非常相似,但不幸的是答案非常简短,即使在阅读了大约 10 个不同的博客和 5 个视频之后,我仍然没有完全理解它。
我可以在 SwiftUI 中布局后获取“View”的位置吗?


所以基本逻辑是我以某种方式GeometryReader用来获取我创建的每个元素的.midX.midY坐标Circle,然后Paths在它们之间进行绘制。我唯一的问题是在创建圆之后获取这些坐标。

如何将路径添加到屏幕上,在ZStack前面Circles,路径作为一个自定义形状在后面?


更多信息:
在 Android 上,最终结果如下所示:

在此输入图像描述

基本上我有一个Challenge具有名称和一些详细文本的对象,我将它们像这样布局,以便它在视觉上代表用户的“旅程”。

所以我真正需要的是知道如何布置一些圆圈/图像(上面有文字),然后绘制连接它们的线。每个这样的挑战圈都需要可点击才能打开详细视图。

line ios swift swiftui geometryreader

3
推荐指数
1
解决办法
3328
查看次数

标签 统计

swiftui ×3

geometryreader ×2

ios ×1

line ×1

swift ×1