Add iOS 26 fluid zoom transition for Menu sheets

On iOS 26+, Menu bottom sheets now morph from their trigger button
using UIViewController.preferredTransition = .zoom. This creates a
fluid visual connection between the trigger and the presented sheet,
complementing the Liquid Glass design language.

The sourceViewTag prop is also available on the generic Dialog/BottomSheet
layer so any dialog can opt into the zoom transition.

https://claude.ai/code/session_011cNDhEb2cDgg5QbVuzEyH1
This commit is contained in:
Claude
2026-02-28 19:18:44 +00:00
committed by Samuel Newman
parent c42502fdcb
commit e143bcd030
6 changed files with 30 additions and 7 deletions
+10
View File
@@ -26,6 +26,7 @@ class SheetView: ExpoView, UISheetPresentationControllerDelegate {
var preventDismiss = false
var preventExpansion = false
var cornerRadius: CGFloat?
var sourceViewTag: Int?
var minHeight = 0.0
var maxHeight: CGFloat! {
didSet {
@@ -135,6 +136,15 @@ class SheetView: ExpoView, UISheetPresentationControllerDelegate {
}
sheetVc.view.addSubview(innerView)
if #available(iOS 26.0, *),
let tag = self.sourceViewTag,
let bridge = self.appContext?.reactBridge,
let sourceView = bridge.uiManager.view(forReactTag: NSNumber(value: tag)) {
sheetVc.preferredTransition = .zoom { _ in
return sourceView
}
}
self.sheetVc = sheetVc
self.isOpening = true