所以我想从我的加载屏幕viewcontroller转换到我的应用程序的主viewcontroller。我使用UIViewControllerAnimatedTransitioning
执行此操作,因为它比我以前的transitionFromView:
效果更好。
但它仍然不完美。我的视图顶部有一个栏,您可以在顶部(A bit like this)和我视图底部的标签栏中看到。
现在它动画的视图是这样的:
如您所见,标签栏和导航栏太高,会立即在下一帧中修复。这会导致应用程序闪烁。我不想要这个。我究竟做错了什么?如果不是我做错了什么,我该如何解决? (我已经尝试将它添加到一个大小正确的窗口,但它不起作用)
这是我的转换代码(它是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();
});
答案 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);
,所以我实际上并没有使用它......