Как мне заставить мой UIView иметь правильный размер для его содержимого в SwiftUI?
Я хочу использовать потрясающий MultiSegmentPicker, написанный Yonat Sharon
в моем представлении SwiftUI.
https://github.com/yonat/MultiSelectSegmentedControl
Однако я не совсем понимаю взаимодействие между представлением UIViewRepresentable View и моим представлением 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"]
)
}
}
}
Обратите внимание, что у меня есть VStack с Spacer() перед элементом управления.
Желательным поведением для этого примера было бы, чтобы полоса с "первым", "вторым" и т. Д. Плотно прилегала к нижней части экрана. Вместо этого хост-контроллер удерживает все это пространство...
Нужно ли мне использовать программу чтения геометрии, чтобы решить эту проблему и уменьшить высоту. Или мне нужно что-то настроить в представлении UIViewRepresentable?
Любые идеи по объединению UIKit и SwiftUI всегда приветствуются... Это простое решение для кого-нибудь?
Это не решило мою проблему: содержимое UIViewRepresentable не обновляется
Как заставить представление SwiftUI UIViewRepresentable охватить его содержимое?
1 ответ
Не могу проверить это сейчас, просто мысленно, попробуйте с фиксированным размером, как показано ниже
MultiSegmentPicker(
selectedSegmentIndexes: $selectedSegmentIndexes,
items: ["First", "Second", "Third", "Done"]
).fixedSize() // << here !!