C# 两个viewcontroller XAMARIN.IOS之间的转换
我试图在xamarin.ios上的两个视图控制器之间创建一个事务(我没有使用导航控制器,而是使用viewcontroller),我希望当滑动动作进行时,它会出现在移动另一侧viewcontroller(目标viewcontroller)的视图控制器下,我试图模拟经典的“返回”ios的手势同时出现在系统本身和whatsapp上。我已经发布了,并且已经部分解决了,管理滚动动画,但是对于第二个视图控制器,没有什么要做的:( 我的代码C# 两个viewcontroller XAMARIN.IOS之间的转换,c#,xamarin,xamarin.ios,C#,Xamarin,Xamarin.ios,我试图在xamarin.ios上的两个视图控制器之间创建一个事务(我没有使用导航控制器,而是使用viewcontroller),我希望当滑动动作进行时,它会出现在移动另一侧viewcontroller(目标viewcontroller)的视图控制器下,我试图模拟经典的“返回”ios的手势同时出现在系统本身和whatsapp上。我已经发布了,并且已经部分解决了,管理滚动动画,但是对于第二个视图控制器,没有什么要做的:( 我的代码 private void InteractiveTransitio
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;
var storyboard = UIStoryboard.FromName("Main", null);
// var viewController = storyboard.InstantiateViewController(x);
//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
);
如果您使用的是故事板,并且熟悉segue。要定义自定义过渡动画,您必须按照以下方式配置segue: 然后,在第一个视图控制器中,您可以覆盖
prepareforsgue
方法:
public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
{
base.PrepareForSegue(segue, sender);
var destinationVC = segue.DestinationViewController as SecondViewController;
destinationVC.Callee = this;
destinationVC.TransitioningDelegate = new CustomTransitioningDelegate(sender as UIView);
destinationVC.ModalPresentationStyle = UIModalPresentationStyle.Custom;
}
动画是在继承自UIViewControllerAnimatedTransitioning的类中定义的
public class GrowTransitionAnimator : UIViewControllerAnimatedTransitioning
{
readonly UIView _animationOrigin;
public GrowTransitionAnimator(UIView animationOrigin)
{
_animationOrigin = animationOrigin;
}
public override async void AnimateTransition(IUIViewControllerContextTransitioning transitionContext)
{
// The animation here
}
public override double TransitionDuration(IUIViewControllerContextTransitioning transitionContext)
{
return 0.3;
}
}
我的情况如下,从一个选项卡栏控制器开始,在界面中导航,在下一个视图控制器中导航,我引用每个视图控制器的一个新实例
public void ApriStoryBoard(string x)
{
var storyboard = UIStoryboard.FromName("Main", null);
var viewController = storyboard.InstantiateViewController(x); // Your view controller here
UIApplication.SharedApplication.KeyWindow.RootViewController = viewController;
}
您设置为“我”的参数不会在main.storyboard文件中显示您使用的viewcontroller类型是什么?
我的故事板中没有“segue”面板。您使用的控制器类型是什么?您可以共享您的示例,以便我可以直接在我的一侧进行测试。
public void ApriStoryBoard(string x)
{
var storyboard = UIStoryboard.FromName("Main", null);
var viewController = storyboard.InstantiateViewController(x); // Your view controller here
UIApplication.SharedApplication.KeyWindow.RootViewController = viewController;
}