Here is my work around for UIKit extension UIViewController { @objc func configureAsPopoverWith(sender: Any?) { self.modalPresentationStyle = .popover var enableZoom: Bool = true var source: Any? = sender #if targetEnvironment(macCatalyst) // PopOver with Zoom crashes for macOS 26 if #available(iOS 26.0, *), let view = (sender as? UIBarButtonItem)?.value(forKey: view) as? UIView { source = view } enableZoom = false #endif if let sourceView = source as? UIView { self.popoverPresentationController?.sourceView = sourceView self.popoverPresentationController?.sourceRect = sourceView.bounds if #available(iOS 18.0, *), enableZoom { self.preferredTransition = .zoom { _ in sourceView } } } else if let sourceItem = source as? UIBarButtonItem { self.popoverPresentationController?.barButtonItem = sourceItem } } }
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: