san*_*osh 6 uinavigationcontroller ios swift
我有我从隐藏导航栏的视图控制器推送的视图控制器。但我想在目标视图控制器中显示导航栏。
我用这个语句尝试过它没有显示导航栏。
self.navigationController?.navigationBar.isHidden = false
Run Code Online (Sandbox Code Playgroud)
我试过这个声明它正在工作
self.navigationController?.setNavigationBarHidden(false, animated: true)
Run Code Online (Sandbox Code Playgroud)
我想知道有什么区别?
.isHidden并setNavigationBarHidden()产生不同的效果和结果。我们不会谈论动画部分。
的属性self.navigationController?.navigationBar.isHidden是从 的扩展UIView。该isHidden财产属于UIView这意味着,navigationBar(延伸UIView)做了一些覆盖在isHidden使其具有不同的效果和结果相比setNavigationBarHidden()。
示例setNavigationBarHidden(true):
导航栏不会是透明的,第 1 页(导航栏隐藏的页面)。
.isHidden = true 的示例:
其中导航栏是完全透明的,第 1 页显示在第 2 页的导航栏下。第 3 个是 UIWindow。
效果完全相同,但是使用第二个版本(方法)时您还可以定义动画。
当您通过属性执行此操作时 - 默认情况下动画处于关闭状态。
除此之外,您还有另一个选择:
self.navigationController?.isNavigationBarHidden = false
Run Code Online (Sandbox Code Playgroud)
有关该主题的更多信息: https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621850-isnavigationbarhidden
如果为 true,则隐藏导航栏。默认值为 false。设置此属性会更改导航栏的可见性,而无需动画更改。如果您想以动画方式进行更改,请使用 setNavigationBarHidden(_:animated:) 方法。
Ram*_*sal -5
不,它们不一样,
self.navigationController?.isNavigationBarHidden
是一个 getter 属性(它显示导航栏是否隐藏。)它只会返回一个布尔值,表示导航栏是否隐藏的状态。(尝试将其值分配给 bool ,就像var isHidden = self.navigationController?.isNavigationBarHidden它会根据导航栏的状态为您提供 true 或 false 一样。)
然而
self.navigationController?.setNavigationBarHidden(false, animated: true)
是一个设置器属性,它可以让您设置导航栏的状态。
编译器不会抛出任何错误self.navigationController?.isNavigationBarHidden = false
,但不会执行任何操作,因为您只能从此处了解状态。
| 归档时间: |
|
| 查看次数: |
3886 次 |
| 最近记录: |