如何让我的 UIView 在 SwiftUI 中根据其内容正确调整大小?

How do I get my UIView to correctly size for its content in SwiftUI?

我想在我的 SwiftUI 视图中使用 Yonat Sharon 编写的很棒的 MultiSegmentPicker。

https://github.com/yonat/MultiSelectSegmentedControl

但是,我并不完全理解 UIViewRepresentable View 和我的 SwiftUI View 之间的交互。如何让宿主视图控制器将其高度缩小到分段控件的大小?

这是演示页面的调试器视图 - 注意顶部栏周围的蓝色区域:

演示代码并没有提供很多关于问题的见解,它只是对 UIViewRepresentable 视图的调用。我在这里将其简化为一个示例:

   struct MultiSegmentPickerX: View {

    @State private var selectedSegmentIndexes: IndexSet = []

    var body: some View {
        VStack(alignment: .center) {
            Spacer()
            MultiSegmentPicker(
                selectedSegmentIndexes: $selectedSegmentIndexes,
                items: ["First", "Second", "Third", "Done"]
            )
        }
    }
}

请注意,我在控件前有一个带有 Spacer() 的 VStack。

此示例所需的行为是带有 "First"、"Second" 等的栏紧贴屏幕底部。相反,主机控制器保留所有 space...

是否需要使用几何reader来解决这个问题,缩小高度。或者我是否必须在 UIViewRepresentable 视图中调整某些内容?

对桥接 UIKit 和 SwiftUI 的任何见解总是很感激... 这是一个简单的解决方案吗?

这些都没有解决我的问题: UIViewRepresentable content not updating

How do I make SwiftUI UIViewRepresentable view hug its content?

How do I size a UITextView to its content?

现在无法测试,仅凭想法,按如下固定大小试试

MultiSegmentPicker(
    selectedSegmentIndexes: $selectedSegmentIndexes,
    items: ["First", "Second", "Third", "Done"]
).fixedSize()       // << here !!