【问题标题】:Grey shadow on UINavigationBarUINavigationBar 上的灰色阴影
【发布时间】:2015-05-22 23:13:00
【问题描述】:

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

segue 完成后,它会恢复为半透明状态,并通过 UINavigationBar 显示蓝色 UIView,并带有很好的模糊效果。

这个灰色阴影很可能是由于我从 UITableViewController 上的那个工具栏中的 UIToolBar 和 UISegmentedControl 引起的。它看起来像这样:

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

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

我尝试使用 TransitionCoordinator 使用它的 alpha 属性淡出 UIToolBar,但没有成功。我也访问过关于 SO 的其他类似问题,但我没有得到任何结果。

奇怪的是它有时可以正常工作,但我不知道为什么它并不总是发生,也不知道如何完全删除它。

更新:

Xcode 视图层次结构:

在列表中查看层次结构:

透明导航栏:

更新 2:

下拉 UITableView 也会显示这个,如何附加 UIToolbar?看起来委托方法无法正常工作

请帮帮我, 谢谢!

【问题讨论】:

    标签: ios objective-c uinavigationcontroller uinavigationbar uitoolbar


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      弄清楚到底发生了什么的最好方法是在调用completeTransition: 的地方放置一个断点,或者在动画期间手动暂停调试器。然后,您可以使用 Xcode 的 View Hierarchy 调试器来确定是哪个视图导致了这种情况:

      一旦您确切地确定了它是哪个视图,您将需要确保它与您当前的动画一起动画(而不是在它之后),并且您需要确保在两个动画完成后调用 completeTransition:

      【讨论】:

      • 非常好的答案。我觉得这很奇怪,因为当我在过渡期间暂停时,我看不到任何会导致灰色阴影的原因
      • 出现的视图控制器的背景是清晰的还是纯色的?
      • 背景色设置为白色,另外请看我上传的截图
      • 另一个技巧是让你的导航栏清晰。您可以通过将背景图像设置为清晰图像来做到这一点。这将消除模糊,并且可能更容易准确地看到您的视图背后的内容。在模拟器中切换慢速动画也会有所帮助,因为您不能很容易地暂停动画。
      • 请看我最新的截图,看起来确实是因为 UIToolbar 的高度太高了
      猜你喜欢
      • 2015-12-11
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 2020-09-25
      相关资源
      最近更新 更多