【问题标题】:UINavigation bar not getting cleared in swift3 XcodeUI导航栏在swift 3 Xcode中没有被清除
【发布时间】:2017-07-10 07:54:30
【问题描述】:

我正在尝试实现一个透明的导航栏,以便清楚地显示背景图像。目前我使用了一个基本控制器类,我在其中放置了透明导航栏的代码:

 self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.view.backgroundColor = .clear

但目前我只在第一页获得清晰的导航栏。如果我推动并转到第二个控制器,我可以看到一个空白区域。 见下图:

First page with cleared navigation bar

Second page with empty white space at the top

为什么导航栏不透明?有什么想法吗?

【问题讨论】:

  • 第二页的background color 的视图是什么?,除了back 按钮之外,我看不到您附加的图像有什么不同。
  • 首先你应该在第一个屏幕上添加一个导航栏标题,看看导航栏是否真的在第一页上可见?也许它没有在第一个屏幕上配置和隐藏。

标签: ios xcode swift3 uinavigationbar


【解决方案1】:

由于您的导航栏是transparent,它将显示您的viewcontroller's view background color

我认为,您的第二个页面视图控制器的视图 background colorWhite。这就是您收到white color 的原因。

将顶部约束添加到 SuperView,而不是 TopLayout Guide

【讨论】:

  • 我有一张背景图片
  • 线条图像
  • 您添加的图像约束是什么?您添加到顶部布局右侧..
  • 您必须添加到superview 而不是top layout
  • TopLayout 会将您的视图添加到navigation bar,因此您必须添加到SuperView
【解决方案2】:

改变视图背景

self.navigationController?.navigationBar.isTranslucent = true

有关 isTranslucent 的更多详细信息,请阅读此文档 https://developer.apple.com/documentation/uikit/uinavigationbar/1624928-translucent

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多