Tabbar和导航栏不适用于UIViewControllerAnimatedTransitioning

时间:2016-05-17 13:35:30

标签: c# ios animation xamarin

所以我想从我的加载屏幕viewcontroller转换到我的应用程序的主viewcontroller。我使用UIViewControllerAnimatedTransitioning执行此操作,因为它比我以前的transitionFromView:效果更好。

但它仍然不完美。我的视图顶部有一个栏,您可以在顶部(A bit like this)和我视图底部的标签栏中看到。

现在它动画的视图是这样的:

enter image description here

如您所见,标签栏和导航栏太高,会立即在下一帧中修复。这会导致应用程序闪烁。我不想要这个。我究竟做错了什么?如果不是我做错了什么,我该如何解决? (我已经尝试将它添加到一个大小正确的窗口,但它不起作用)

这是我的转换代码(它是Xamarin,但你应该能够理解它的要点):

// Grab the from and to view controllers from the context
var fromViewController = transitionContext.GetViewControllerForKey(UITransitionContext.FromViewControllerKey);
var toViewController = transitionContext.GetViewControllerForKey(UITransitionContext.ToViewControllerKey);

toViewController.WillMoveToParentViewController(fromViewController);
fromViewController.View.InsertSubview(toViewController.View, 0);
toViewController.View.LayoutIfNeeded();
toViewController.View.RemoveFromSuperview();

fromViewController.View.UserInteractionEnabled = false;

transitionContext.ContainerView.AddSubview(fromViewController.View);
transitionContext.ContainerView.AddSubview(toViewController.View);

toViewController.View.Alpha = 0;

UIView.Animate(TransitionDuration(transitionContext), () => {
    toViewController.View.Alpha = 1;
}, () => {
    transitionContext.CompleteTransition(true);
    fromViewController.Dispose();
});

1 个答案:

答案 0 :(得分:0)

我发现了这个问题,我这样做了:

NSString * stringTest = @Test string to draw in PDF file";
[PDFRenderer drawString:[NSString stringWithFormat:@"%@", stringTest] withFont:YOUR_UIFONT inRect:CGRECT_FRAME_OF_UILABEL andAlignement:NSTextAlignmentCenter];

我什么时候应该这样做:

UIView.Animate(TransitionDuration(transitionContext), () => {
    toViewController.View.Alpha = 1;
}, () => {
    transitionContext.CompleteTransition(true);
    fromViewController.Dispose();
});

动画不使用PresentViewController(_controller, true, null); ,所以我实际上并没有使用它......