Я решил с помощью этого кода, он еще не доработан ...
/*Riproduco l'animazione di classica di iOS dove se si scorre nel bordo sinistro, in tempo reale la View si anima
*e si sposta indirizzando verso un altra pagina che in questo caso e la pagina precedente!
View: La view da animare
VCD: ViewController di destinazione*/
public void SlideAnimation(UIView View, string VCD)
{
var interactiveTransitionRecognizer = new UIScreenEdgePanGestureRecognizer();
interactiveTransitionRecognizer.AddTarget(() => InteractiveTransitionRecognizerActionWithoutIndex(interactiveTransitionRecognizer, View, VCD));
interactiveTransitionRecognizer.Edges = UIRectEdge.Left;
View.AddGestureRecognizer(interactiveTransitionRecognizer);
}
//Metodo di appoggio
private void InteractiveTransitionRecognizerActionWithoutIndex(UIScreenEdgePanGestureRecognizer sender, UIView View, string x)
{
//Contiene un valore numerico che varia in base allo stato della gesture
var percento = sender.TranslationInView(View).X * 100 / sender.View.Bounds.Size.Width;
//Quando la gesture rileva una variazione
if (sender.State == UIGestureRecognizerState.Changed)
{
var minTransform = CGAffineTransform.MakeTranslation(sender.TranslationInView(View).X, 0); //*2 = piu rapido
var maxTransform = CGAffineTransform.MakeTranslation(sender.TranslationInView(View).X, 0);
View.Transform = true ? minTransform : maxTransform;
UIView.Animate(0.1, 0, UIViewAnimationOptions.CurveEaseInOut,
() =>
{
View.Transform = true ? maxTransform : minTransform;
},
null
);
}
//Quando la gesture termina, si alza il dito o limite schermo
else if (sender.State == UIGestureRecognizerState.Ended)
{
if (percento <= 40)
{
//Annullo l'animazion e torna in posizione
var minTransform = CGAffineTransform.MakeTranslation(sender.TranslationInView(View).X, 0);
var maxTransform = CGAffineTransform.MakeIdentity();
View.Transform = true ? minTransform : maxTransform;
UIView.Animate(0.1, 0, UIViewAnimationOptions.CurveEaseInOut,
() =>
{
View.Transform = true ? maxTransform : minTransform;
},
null
);
}
else
{
//La gesture è conclusa quindi eseguo il seguente codice
//Feedback haptico
var impact = new UIImpactFeedbackGenerator(UIImpactFeedbackStyle.Soft);
impact.Prepare();
impact.ImpactOccurred();
//Indirizzo
var storyboard = UIStoryboard.FromName("Main", null);
var viewController = storyboard.InstantiateViewController(x); // Your view controller here
UIApplication.SharedApplication.KeyWindow.RootViewController = viewController;
}
}