From b7ee9b9e3cd3be6fdcd6599a2b756dbba3755239 Mon Sep 17 00:00:00 2001 From: Dominic Go <18517029+dominicstop@users.noreply.github.com> Date: Sat, 18 Jun 2022 05:28:01 +0800 Subject: [PATCH] =?UTF-8?q?=E2=AD=90=EF=B8=8F=20Impl:=20Aux.=20Preview=20-?= =?UTF-8?q?=20Transition=20In=20-=20`zoom`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RNIContextMenuView.swift | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/ios/src/ReactNative/RNIContextMenuView/RNIContextMenuView.swift b/ios/src/ReactNative/RNIContextMenuView/RNIContextMenuView.swift index 57e8475..09581eb 100644 --- a/ios/src/ReactNative/RNIContextMenuView/RNIContextMenuView.swift +++ b/ios/src/ReactNative/RNIContextMenuView/RNIContextMenuView.swift @@ -750,8 +750,10 @@ fileprivate extension RNIContextMenuView { "isAuxiliaryPreviewAttachedToTop": shouldAttachToTop, ]; + typealias TransStartEnd = (() -> (), () -> ()); + // closures to set the start/end values for the entrance transition - let (setTransitionStateStart, setTransitionStateEnd): (() -> (), () -> ()) = { + let (setTransitionStateStart, setTransitionStateEnd): TransStartEnd = { var transform = previewAuxiliaryView.transform; switch auxConfig.transitionConfigEntrance.transition { @@ -783,7 +785,7 @@ fileprivate extension RNIContextMenuView { // apply transform previewAuxiliaryView.transform = transform; - },{ + }, { // fade - end previewAuxiliaryView.alpha = 1; @@ -801,7 +803,27 @@ fileprivate extension RNIContextMenuView { }); case .zoom: - return ({},{}); + let scaleOffset: CGFloat = 0.3; + let scale = 1 - scaleOffset; + + return ({ + // fade - start + previewAuxiliaryView.alpha = 0; + + // zoom - start + transform = transform + .scaledBy(x: scale, y: scale); + + // start - apply transform + previewAuxiliaryView.transform = transform; + + }, { + // fade - end + previewAuxiliaryView.alpha = 1; + + // zoom - end - reset transform + previewAuxiliaryView.transform = .identity; + }); case .none: fallthrough;