From 08aa390f482d44bc5eda05e8861a48b60426c1b2 Mon Sep 17 00:00:00 2001 From: Felix Lisczyk Date: Tue, 2 Jun 2020 17:03:53 +0200 Subject: [PATCH] Fixed layout issue with album dropdown on iPad --- .../Dropdown/DropdownPresentationController.swift | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Sources/Presentation/Dropdown/DropdownPresentationController.swift b/Sources/Presentation/Dropdown/DropdownPresentationController.swift index aec0db81..ef496041 100644 --- a/Sources/Presentation/Dropdown/DropdownPresentationController.swift +++ b/Sources/Presentation/Dropdown/DropdownPresentationController.swift @@ -55,23 +55,25 @@ class DropdownPresentationController: UIPresentationController { } override var frameOfPresentedViewInContainerView: CGRect { - guard let containerView = containerView else { return .zero } - + guard let containerView = containerView, + let presentingView = presentingViewController.view else { return .zero } + let size = self.size(forChildContentContainer: presentedViewController, - withParentContainerSize: containerView.bounds.size) - + withParentContainerSize: presentingView.bounds.size) + let position: CGPoint if let navigationBar = (presentingViewController as? UINavigationController)?.navigationBar { // We can't use the frame directly since iOS 13 new modal presentation style let navigationRect = navigationBar.convert(navigationBar.bounds, to: nil) - position = CGPoint(x: 0, y: navigationRect.height + navigationRect.origin.y) + let presentingRect = presentingView.convert(presentingView.frame, to: containerView) + position = CGPoint(x: presentingRect.origin.x, y: presentingRect.origin.y + navigationRect.height) // Match color with navigation bar presentedViewController.view.backgroundColor = navigationBar.barTintColor } else { position = .zero } - + return CGRect(origin: position, size: size) } }