gpt4 book ai didi

ios - 如何在 iOS 11 中正确设置 UINavigationBar 高度

转载 作者:可可西里 更新时间:2023-11-01 05:40:03 28 4
gpt4 key购买 nike

在我的 iOS 9+ 应用程序中,我在一些 UIViewController 中“手动”使用了 UINavigationBar(= 将它们直接放在 VC 中而不是使用 UINavigationViewController )。

使用简单的约束为这样的 UINavigationBar 设置高度以前没有问题。然而在 iOS 11 中,条形图本身仍然正确使用分配的大小,但内容不再正确定位(现在对齐到顶部)。

enter image description here

知道如何解决这个问题吗?

编辑:

我很确定,这不是“customizing iOS 11 navigation bar height customizing”的副本,这个问题解决了当我直接使用 UINavigationBarUINavigationBar 子类的问题。此外,所描述的问题似乎从 Beta 4 开始就解决了,而我在 Beta 6 中遇到了这个问题。

编辑 2:

与此同时,我按照CharlieSu in the other thread 的建议实现了一个UINavigationBar 子类。 .但是,这并没有解决我的问题。似乎 subview 框架都设置正确(无需手动执行此操作),但布局无论如何都被破坏了。所以手动设置帧没有任何区别。

最佳答案

我现在正面临这个问题。起初,它似乎是另一个与我冲突的栏中的高度限制,但我的有 1000 优先级所以它似乎不是问题。然后我在 UINavigationBar“UINavigationBarContentView”中看到另一个 View ,这个 View 的高度大于 0。

然后我尝试设置 navigationBar.clipsToBounds = true 并且它有效,因为父 View 具有正确的高度...

编辑:如果您需要显示条形阴影,则需要 clipToBounds = false。在这种情况下,您可以子类化 NavigationBar

import UIKit

class SecondNavigationBar: UINavigationBar {
override func layoutSubviews() {
super.layoutSubviews()

for subview in self.subviews {
var stringFromClass = NSStringFromClass(subview.classForCoder)
print("--------- \(stringFromClass)")
if stringFromClass.contains("BarBackground") {
subview.frame = self.bounds
} else if stringFromClass.contains("UINavigationBarContentView") {
subview.frame = self.bounds
}
}
}
}

关于ios - 如何在 iOS 11 中正确设置 UINavigationBar 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45711765/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com