【问题标题】:UINavigationBar background shadowUINavigationBar 背景阴影
【发布时间】:2015-06-18 00:18:13
【问题描述】:

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

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

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

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

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

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

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

视图层次结构:

Xcode 视图层次结构:

在列表中查看层次结构:

透明导航栏:

更多信息:

  • 下拉UITableView也显示这个,怎么附加UIToolbar?看起来委托方法无法正常工作。
  • 向列表中添加新项目时,问题消失,直到我重新启动导航层次结构中的根 ViewController

谢谢!

【问题讨论】:

    标签: ios objective-c uinavigationcontroller uinavigationbar uitoolbar


    【解决方案1】:
    - (void)removeShadowLineFromNavBar{
    for (UIView *view in self.navigationController.navigationBar.subviews) {
        for (UIView *view2 in view.subviews) {
            if ([view2 isKindOfClass:[UIImageView class]]) {
                [view2 removeFromSuperview];
            }
        }
    }
    }
    

    该行是 UINavigationBar 内的 UIImageView 作为子视图。通过子视图,您可以像从超级视图中删除任何其他视图一样删除它。

    【讨论】:

    • 我在目标 ViewController 底部的模糊(正常)UIToolBar 上看到了相同的效果。你认为这也能解决这个问题吗?今天晚些时候试试
    • 该代码删除了该行,但我仍然遇到灰色阴影问题。我还需要一种恢复此 UIImageView 阴影线的方法,因为我需要在同一导航堆栈中的其他 ViewController 上使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多