![](/img/trans.png)
[英]How to completely hide title bar but not navigation bar in iOS 13 Swift
[英]Hide Navigation bar separator line on iOS 13
我有一个带有大标题导航栏的视图 controller。 当我推动 controller 时,仅在 iOS 13 上是导航栏下可见的一条线。 我该如何解决?
我已经在 Stack 上尝试了几种解决方案,但它们并没有像这样工作:
let navigationBar = navigationController?.navigationBar
let navigationBarAppearence = UINavigationBarAppearance()
navigationBarAppearence.shadowColor = .clear
navigationBar?.scrollEdgeAppearance = navigationBarAppearence
使用此代码段,即使我将“透明颜色”更改为红色,它也仅在第一个 controller 中可见,在推送的 controller 中它始终为灰色。
我该如何解决?
编辑
我已经解决了:
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
appearance.shadowColor = nil
navigationController?.navigationBar.standardAppearance = appearance
}
import UIKit
public protocol HideableHairlineHelper {
func hideHairline()
func showHairline()
}
extension HideableHairlineHelper where Self: UIViewController {
public func hideHairline() {
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.toolbar.setShadowImage(UIImage(), forToolbarPosition: .any)
}
public func showHairline() {
self.navigationController?.navigationBar.shadowImage = nil
}
}
这是我在控制器上使用的 NavBar 模板,没有线条。
navigationController?.setNavigationBarHidden(false, animated: false)
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true
let titleAttributes =
[
NSAttributedString.Key.font: UIFont.systemFont(ofSize: 18),
NSAttributedString.Key.foregroundColor: UIColor.red,
]
self.navigationController?.navigationBar.titleTextAttributes = titleAttributes
我显然改变了字体大小和颜色,但这是我为每个 controller 放置的基本 function 以使其清晰(半透明)。
我已经尝试了上述建议,但未能删除导航分隔线。 最终,我想通了使用TransparentBackground
诀窍是用TransparentBackground
初始化UINavigationBarAppearance
。 然后您可以轻松删除导航栏的水平线。
let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
appearance.backgroundColor = UIColot.green // Required background color
然后按照苹果的建议将外观更改添加到导航项。
self.navigationItem.standardAppearance = appearance
self.navigationItem.scrollEdgeAppearance = appearance
self.navigationItem.compactAppearance = appearance
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.