当我转向我已经制作的UIViewController时,我遇到了一个奇怪的问题。 ViewController B(我认为的那个)有一个使用TransitionCoordinator和约束向下滑动的UIView,但它在右边显示一个灰色阴影,如下所示:
一旦完成了segue,它就会变回半透明状态并通过UINavigationBar以非常模糊的方式显示蓝色的UIView。
这个灰色阴影很可能是由于UITableViewController上的UIToolBar和UISegmentedControl所导致的。它看起来像这样:
我将此代码与我的UIToolBar一起使用:
- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar {
return UIBarPositionTopAttached;
}
我尝试使用TransitionCoordinator淡化UIToolBar使用它的alpha属性,但没有成功。我也曾在SO上访问过其他类似的问题,但我还没有到达任何地方。
奇怪的是,它有时可以正常工作,但我无法弄清楚为什么它总是不会发生,也不能完全消除它。
更新
Xcode视图层次结构:
查看列表中的层次结构:
透明导航栏:
更新2:
拉下UITableView也会显示这个,我该如何附加UIToolbar?看起来委托方法并不适用
请帮我这个, 谢谢!
答案 0 :(得分:1)
我遇到了同样的问题,原因是窗口的背景颜色是黑色。
通过设置窗口颜色来解决它,以匹配application:didFinishLaunchingWithOptions
中的视图控制器背景颜色。
答案 1 :(得分:0)
自定义转换完成后,将从其容器中删除传出视图控制器。这可能是您在过渡完成时看到灰色区域消失的原因。它在前一个视图控制器中的东西。我可以通过创建一个具有透明背景的视图的UIViewController来部分复制您的屏幕截图。使用标准动画,UIWindow的默认背景颜色的灰色显示出来。由于前一个视图控制器的位置略微向右,因此它只显示在导航栏的右侧。
确切地知道发生了什么的最好方法是在动画期间手动调用completeTransition:
或手动暂停调试器。然后,您可以使用Xcode的View Hierarchy调试器来确定导致此问题的视图:
一旦你弄清楚它究竟是哪个视图,你就要确保它与你当前的动画一起动画(而不是它之后的动画),你需要确保在两个动画完成后调用completeTransition:
。