首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift 3:如何逆转透明导航条?

Swift 3:如何逆转透明导航条?
EN

Stack Overflow用户
提问于 2017-02-19 20:32:18
回答 3查看 3.1K关注 0票数 3

我正在尝试创建一个twitter应用程序,使用twitter模仿真正的应用程序。在时间线视图上,我有一个常规导航栏,当用户点击用户配置文件时,配置文件视图有一个透明的条,以便显示用户的横幅图像。我使用以下代码使导航栏在用户配置文件视图中透明:

代码语言:javascript
复制
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true

我遇到的问题是当我从配置文件视图返回时,时间线导航栏变得混乱(下面的截图)。我猜想这是因为我更改了概要视图视图控制器中导航栏的某些方面,并且在返回到时间线视图时继续使用。

如何逆转导航条的透明度以修复摇摇欲坠的导航条?在时间线视图控制器中,我尝试使用下面的代码来反转它,但是它不起作用。

代码语言:javascript
复制
self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.isTranslucent = false

带有常规导航条的时间线视图

带有透明导航栏的配置文件视图

从profile视图返回后的时间线视图,导航栏不稳定

EN

回答 3

Stack Overflow用户

发布于 2017-02-20 08:55:22

类似的情况也发生在我身上。后来,我注意到我没有在正确的生命周期metod中更改导航项的属性。在时间线视图控制器中的viewWillAppear中使其不透明,并在时间线视图控制器离开之前在viewWillDisappear中使其透明。这可能与此有关吗?

票数 3
EN

Stack Overflow用户

发布于 2019-04-25 10:44:01

在您正在更改导航栏的视图控制器中,执行以下操作

代码语言:javascript
复制
override func viewWillAppear(_ animated: Bool) {
    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.isTranslucent = true
    navigationController?.view.backgroundColor = .clear
    super.viewWillAppear(animated)
}

override func viewWillDisappear(_ animated: Bool) {
    navigationController?.navigationBar.isTranslucent = false
    navigationController?.view.backgroundColor = .blue
    super.viewWillDisappear(animated)
}
票数 2
EN

Stack Overflow用户

发布于 2017-12-20 10:09:38

@朱利安,我和你有同样的问题。我有一个带有红色导航条的主视图,并且希望细节视图导航栏是透明的。我设法做到了,但在返回主视图时遇到了同样的故障。导航条保持透明1.5秒钟左右,然后返回原来的红色。我无法通过设置导航条的样式来解决这个问题,但是我设法用不同的方式修复了它。这不是一个首选的解决方案,但它已经花费了我很多小时,我对此很满意。

好的,我做的是创建一个ImageView,并在导航栏下与自动布局对齐。导航条的高度为44个像素,因此ImageView得到了y的位置-44。我给ImageView提供了导航条的红色,所以当它透明1.5秒时,用户实际上看到的是ImageView而不是导航条的颜色。

希望这对你也有帮助。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42332547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档