diff --git a/RiotSwiftUI/Modules/Common/InfoSheet/Coordinator/InfoSheetCoordinator.swift b/RiotSwiftUI/Modules/Common/InfoSheet/Coordinator/InfoSheetCoordinator.swift index 6fb7fc110..54a9719b2 100644 --- a/RiotSwiftUI/Modules/Common/InfoSheet/Coordinator/InfoSheetCoordinator.swift +++ b/RiotSwiftUI/Modules/Common/InfoSheet/Coordinator/InfoSheetCoordinator.swift @@ -64,28 +64,22 @@ private extension InfoSheetCoordinator { // The bottom sheet should be presented with the content intrinsic height as for design requirement // We can do it easily just on iOS 16+ func setupPresentation(of viewController: VectorHostingController) { - let cornerRadius: CGFloat = 24 + let detents: [VectorHostingBottomSheetPreferences.Detent] - guard + if #available(iOS 16, *), - let parentSize = parameters.parentSize, - let presentationController = viewController.sheetPresentationController - else { - viewController.bottomSheetPreferences = .init(cornerRadius: cornerRadius) - return + let parentSize = parameters.parentSize { + + let intrisincSize = viewController.view.systemLayoutSizeFitting(.init(width: parentSize.width, height: UIView.layoutFittingCompressedSize.height), + withHorizontalFittingPriority: .defaultHigh, + verticalFittingPriority: .defaultLow) + + detents = [.custom(height: intrisincSize.height), .large] + } else { + detents = [.medium, .large] } - let intrisincSize = viewController.view.systemLayoutSizeFitting(.init(width: parentSize.width, height: 0), - withHorizontalFittingPriority: .defaultHigh, - verticalFittingPriority: .defaultLow) - - presentationController.preferredCornerRadius = cornerRadius - presentationController.prefersGrabberVisible = true - presentationController.detents = [ - .custom { context in - min(context.maximumDetentValue, intrisincSize.height) - }, - .large() - ] + viewController.bottomSheetPreferences = .init(detents: detents, cornerRadius: 24) + viewController.bottomSheetPreferences?.setup(viewController: viewController) } } diff --git a/changelog.d/pr-7107.change b/changelog.d/pr-7107.change new file mode 100644 index 000000000..19600b10b --- /dev/null +++ b/changelog.d/pr-7107.change @@ -0,0 +1 @@ +Refactor bottom sheet presentation in the device manager.