UINavigationBar上的灰色阴影

时间:2015-03-19 17:35:46

标签: ios objective-c uinavigationcontroller uinavigationbar uitoolbar

当我转向我已经制作的UIViewController时,我遇到了一个奇怪的问题。 ViewController B(我认为的那个)有一个使用TransitionCoordinator和约束向下滑动的UIView,但它在右边显示一个灰色阴影,如下所示:

enter image description here

一旦完成了segue,它就会变回半透明状态并通过UINavigationBar以非常模糊的方式显示蓝色的UIView。

这个灰色阴影很可能是由于UITableViewController上的UIToolBar和UISegmentedControl所导致的。它看起来像这样:

enter image description here

我将此代码与我的UIToolBar一起使用:

- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar {
    return UIBarPositionTopAttached;
}

我尝试使用TransitionCoordinator淡化UIToolBar使用它的alpha属性,但没有成功。我也曾在SO上访问过其他类似的问题,但我还没有到达任何地方。

奇怪的是,它有时可以正常工作,但我无法弄清楚为什么它总是不会发生,也不能完全消除它。

更新

Xcode视图层次结构:

enter image description here

查看列表中的层次结构:

enter image description here

透明导航栏:

enter image description here

更新2:

拉下UITableView也会显示这个,我该如何附加UIToolbar?看起来委托方法并不适用

enter image description here

请帮我这个, 谢谢!

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,原因是窗口的背景颜色是黑色。

通过设置窗口颜色来解决它,以匹配application:didFinishLaunchingWithOptions中的视图控制器背景颜色。

答案 1 :(得分:0)

自定义转换完成后,将从其容器中删除传出视图控制器。这可能是您在过渡完成时看到灰色区域消失的原因。它在前一个视图控制器中的东西。我可以通过创建一个具有透明背景的视图的UIViewController来部分复制您的屏幕截图。使用标准动画,UIWindow的默认背景颜色的灰色显示出来。由于前一个视图控制器的位置略微向右,因此它只显示在导航栏的右侧。

确切地知道发生了什么的最好方法是在动画期间手动调用completeTransition:或手动暂停调试器。然后,您可以使用Xcode的View Hierarchy调试器来确定导致此问题的视图:

enter image description here

一旦你弄清楚它究竟是哪个视图,你就要确保它与你当前的动画一起动画(而不是它之后的动画),你需要确保在两个动画完成后调用completeTransition: