如何在swift 5中调整导航栏的位置?
Posted
技术标签:
【中文标题】如何在swift 5中调整导航栏的位置?【英文标题】:how to adjust the position of the UINavigationBar in swift5? 【发布时间】:2019-11-12 07:09:25 【问题描述】:我想重新定位 UINavigationBar。所以我用代码给了一个新的值,但它并没有改变。
@IBOutlet var headerBar: UINavigationBar!
let screenHeight = UIScreen.main.bounds.size.height
override func viewDidLoad()
super.viewDidLoad()
if screenHeight > 667
headerBar = UINavigationBar(frame: CGRect(x: 0, y: 54, width: headerBar.frame.width, height: headerBar.frame.height))
else
headerBar = UINavigationBar(frame: CGRect(x: 0, y: 40, width: headerBar.frame.width, height: headerBar.frame.height))
我该如何解决这个问题?
我在主线程上运行,但没有任何变化。
@IBOutlet var headerBar: UINavigationBar!
let screenHeight = UIScreen.main.bounds.size.height
override func viewDidLoad()
super.viewDidLoad()
DispatchQueue.main.async
if self.screenHeight > 667
self.headerBar = UINavigationBar(frame: CGRect(x: 0, y: 54, width: self.headerBar.frame.width, height: self.headerBar.frame.height))
else
self.headerBar = UINavigationBar(frame: CGRect(x: 0, y: 40, width: self.headerBar.frame.width, height: self.headerBar.frame.height))
从主故事板查看的标题栏区域
注意:此标题栏被图片中的导航控制器栏遮挡。但我在代码中隐藏了导航控制器栏。
【问题讨论】:
在主线程中调用你的条件。否则调用 viewDidAppear 它已经在主线程中了。 (在viewDidLoad:
方法中)
@Anbu.Karthik 我在主线程上运行但没有任何变化。
@Mahendra 为什么不改?
【参考方案1】:
试试这个
override func viewDidLoad()
super.viewDidLoad()
DispatchQueue.main.async
let screenHeight = UIScreen.main.bounds.size.height
let bounds = self.headerBar.bounds
self.headerBar.frame = CGRect(x: 0, y: self.screenHeight > 667 ? 54 : 40, width:bounds.width, height: bounds.height )
【讨论】:
谢谢。我可以再问你一个问题吗? @iosbegindevel - 是的,当然 我想让标题栏透明。但它不起作用。 headerBar.backgroundColor = UIColor.black.withAlphaComponent(0) @iosbegindevel - 看到这个寻求帮助:Transparent UINavigationBar in Swift 非常感谢。我很欣赏你的以上是关于如何在swift 5中调整导航栏的位置?的主要内容,如果未能解决你的问题,请参考以下文章
仅在折叠位置时如何设置 Bootstrap 5 导航栏的样式?