3

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

https://github.com/yonat/MultiSelectSegmentedControl

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

这是演示页面的调试器视图 - 请注意顶部栏周围的蓝色区域: 在此处输入图像描述

演示代码并没有深入了解这个问题,它只是对 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”等的条紧贴屏幕底部。相反,主机控制器保留了所有空间......

我是否需要使用几何阅读器来解决这个问题并缩小高度。还是我必须在 UIViewRepresentable 视图中调整一些东西?

任何关于桥接 UIKit 和 SwiftUI 的见解都会受到赞赏......这是一个简单的解决方案吗?

这些并没有解决我的问题: UIViewRepresentable content not updates

如何让 SwiftUI UIViewRepresentable 视图拥抱它的内容?

如何根据内容调整 UITextView 的大小?

4

1 回答 1

4

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

MultiSegmentPicker(
    selectedSegmentIndexes: $selectedSegmentIndexes,
    items: ["First", "Second", "Third", "Done"]
).fixedSize()       // << here !!
于 2020-04-16T16:38:07.870 回答