如何从自定义导航栏中删除这条黑线

Posted

技术标签:

【中文标题】如何从自定义导航栏中删除这条黑线【英文标题】:How can i remove this black line from custom navigation bar 【发布时间】:2018-02-14 22:56:40 【问题描述】:

这是我为自定义导航控制器所做的。我在 viewDidLoad 方法中添加了这段代码。

    import UIKit

class Login: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
        navigatonBar()

    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    
    func navigatonBar()

        let codedLabel:UILabel = UILabel()
        codedLabel.frame = CGRect(x: 0, y:-45, width: self.view.frame.width, height: 200)
        codedLabel.textAlignment = .center
        codedLabel.text = "Login"
        codedLabel.textColor = .white
        codedLabel.font=UIFont.systemFont(ofSize: 22)
        let navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width,height: 75))

        navigationBar.backgroundColor = UIColor.red
        navigationBar.isTranslucent = true
        navigationBar.barTintColor = .red
        self.view.addSubview(navigationBar)
        self.view.addSubview(codedLabel)



    



但我在导航中看到一条黑线

【问题讨论】:

能否提供更多上下文 是的.. 我添加了更多行 所以你有一个自定义 UINavigationController 并添加第二个 UINavigationBar 作为子视图?请提供所有导航控制器代码。 我的视图控制器中没有其他代码 从您的模拟器中发布屏幕截图以查看您所引用的内容可能是个好主意。 【参考方案1】:

由于您尚未发布所有代码,因此很难确定确切的问题,但我猜您有一个带有自定义视图控制器的 UINavigationController 作为 UINavigationController 的根视图控制器。如果是这种情况,我相信您的问题是您要添加第二个导航栏作为自定义视图控制器视图的子视图。不要那样做。删除以下代码:

let codedLabel:UILabel = UILabel()
codedLabel.frame = CGRect(x: 0, y:-45, width: self.view.frame.width, height: 200)
codedLabel.textAlignment = .center
codedLabel.text = "Login"
codedLabel.textColor = .white
codedLabel.font=UIFont.systemFont(ofSize: 22)
let navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width,height: 75))

navigationBar.backgroundColor = UIColor.red
navigationBar.isTranslucent = true
navigationBar.barTintColor = .red
self.view.addSubview(navigationBar)
self.view.addSubview(codedLabel)

并自定义UINavigationControllerUINavigationBar

self.title = "Login"
if let navigationBar = self.navigationController?.navigationBar 
    navigationBar.backgroundColor = UIColor.red
    navigationBar.isTranslucent = true
    navigationBar.barTintColor = .red
    navigationBar.titleTextAttributes = [NSAttributedStringKey.font:  UIFont.systemFont(ofSize: 22), NSAttributedStringKey.foregroundColor: UIColor.white]

【讨论】:

我添加了所有代码。但我需要一个比默认导航栏更高的自定义导航栏 那么你需要发布一个关于自定义高度的导航栏的新问题:) 你有什么参考吗?关于自定义导航栏 ***.com/questions/40751366/… 能否添加title字体属性【参考方案2】:

我很确定那是 shadowImage,要删除它,只需添加此 navigationBar.shadowImage = UIImage(),如果将其设置为 nil(nil 是默认值)将不起作用。编辑:我错过了半透明点,将半透明设置为 false,如果不这样做,导航栏将在导航栏代码上添加 UIVisualEffect:navigationBar.isTranslucent = false

【讨论】:

以上是关于如何从自定义导航栏中删除这条黑线的主要内容,如果未能解决你的问题,请参考以下文章

从自定义 UIViewController 导航到 TabBarController 而不使用 segue

从自定义大标题导航栏过渡到常规导航栏时出现黑框

导航栏中的 Swift 自定义后退按钮

从自定义 NSObject 内部视图推送导航应用程序中的新视图

如何在导航栏中添加自定义视图?

如何在 iPad 的导航栏中调整自定义 UISegmentedControl 的大小?