diff --git a/Sources/BSWInterfaceKit/SwiftUI/ViewModifiers/IntrinsicHeightSheet.swift b/Sources/BSWInterfaceKit/SwiftUI/ViewModifiers/IntrinsicHeightSheet.swift index 35e3a5a9..6450e3e2 100644 --- a/Sources/BSWInterfaceKit/SwiftUI/ViewModifiers/IntrinsicHeightSheet.swift +++ b/Sources/BSWInterfaceKit/SwiftUI/ViewModifiers/IntrinsicHeightSheet.swift @@ -63,20 +63,16 @@ struct IntrinsicHeightDetentView_ForBool: View { @Binding var isPresented: Bool let onDismiss: (() -> Void)? - #if canImport(Darwin) @State var sheetSize: CGSize = .zero - #endif var body: some View { hostView .sheet(isPresented: $isPresented, onDismiss: onDismiss) { contentView() - #if canImport(Darwin) .getCGSize($sheetSize) .presentationDetents([.height(sheetSize.height)]) + #if canImport(Darwin) .fixedSize(horizontal: false, vertical: true) - #else - .presentationDetents([.medium]) #endif } } @@ -94,20 +90,15 @@ struct IntrinsicHeightDetentView_ForItems CGSize) { @@ -125,9 +116,23 @@ private extension View { Color.clear .preference(key: CGSizeKey.self, value: proxy.size) }.onPreferenceChange(CGSizeKey.self) { value in - viewSize.wrappedValue = value + updateSheetSize(viewSize, newSize: value) } ) } + + func updateSheetSize(_ viewSize: Binding, newSize: CGSize) { + guard newSize.height > 0 else { + return + } + + #if canImport(Darwin) + viewSize.wrappedValue = newSize + #else + guard viewSize.wrappedValue.height <= 0 else { + return + } + viewSize.wrappedValue = newSize + #endif + } } -#endif