呈现后视图被UITransitionView屏蔽
我有一个侧面导航控制器,并通过UIButton呈现。 当我通过[self presentviewcontroller: NC animated: YES completion: nil]
直接将该NC UITransitionView
根视图控制器时, [self presentviewcontroller: NC animated: YES completion: nil]
某种原因,NC的菜单端被UITransitionView
,我无法消失。
我附上了一张图片 。 是另一个。
我已经尝试了以下内容:
UIWindow *window = [(AppDelegate *)[[UIApplication sharedApplication] delegate] window];
window.backgroundColor = kmain;
CATransition* transition = [CATransition animation];
transition.duration = .5;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromTop;
[nc.view.layer addAnimation:transition forKey:kCATransition];
[UIView transitionWithView:window
duration:0.5
options:UIViewAnimationOptionTransitionNone
animations:^{ window.rootViewController = nc; }
completion:^(BOOL finished) {
for (UIView *subview in window.subviews) {
if ([subview isKindOfClass:NSClassFromString(@"UITransitionView")]) {
[subview removeFromSuperview];
}
}
}];
但它非常黑,并且随着过渡期间窗口的rootviewcontroller发生变化,它有点波动,导航控制器的一部分和右上角变成黑色。 它看起来非常糟糕。
要通过UITransitionView
获取点击事件,请将containerView
的userInteractionEnabled
为false
。 这是如果您使用UIViewControllerAnimatedTransitioning
进行自定义过渡动画。
例如,在你的animateTransition(_:)
:
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView()
containerView.userInteractionEnabled = false
...
}
我有同样的问题,但在一个不同的情况下,我最终做了一些非常相似的事情来找到视图,但不是删除可能更成问题的视图,而是禁用了用户交互,所以任何触摸事件都会抛出它和其他任何事件对象可以处理用户的交互。 在我的情况下,这只是在将应用程序更新到iOS 10之后才存在的,在iOS 9中运行的相同代码并不属于这一点。
我面临同样的问题,这对我来说解决了问题,
navigationController.setNavigationBarHidden(true,animated:false)
这对我有用,因为我在视图控制器中使用自定义视图作为导航栏。
链接地址: http://www.djcxy.com/p/90779.html上一篇: View being blocked by UITransitionView after being presented
下一篇: How to use latest dot net core in Universal Windows Class Library?