【问题标题】:Hide separtor line between navigationBar and Content隐藏导航栏和内容之间的分隔线
【发布时间】:2015-09-08 13:22:16
【问题描述】:

我想删除这个连接(导航栏和 ImageView 橙色之间的线):

有人知道怎么做吗?

【问题讨论】:

  • 我不认为你可以删除这一行,这是视图和导航控制器之间的分离。我建议隐藏导航并在视图本身中添加导航项,看起来和感觉就像整个视图。

标签: ios swift uiview uinavigationcontroller uinavigationbar


【解决方案1】:

就我而言,我实现了以下代码。

override func viewDidLoad() {
    super.viewDidLoad()

    if self.navigationController != nil {
        hideBorder(self.navigationController!.navigationBar)
    }
}

func hideBorder(view: UIView) -> Bool {
    if view.isKindOfClass(UIImageView.classForCoder()) && view.frame.size.height <= 1 {
        view.hidden = true
        return true
    }

    for sub in view.subviews {
        if hideBorder(sub as! UIView) {
            return true
        }
    }
    return false
}

【讨论】:

    【解决方案2】:

    修改AppDelegate文件并添加以下代码:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
    
        // Change status bar color to white
        UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
    
        // To remove separtor line between navigation controller and view
        UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
        UINavigationBar.appearance().shadowImage = UIImage()
        return true
    }
    

    【讨论】:

      【解决方案3】:

      viewWillAppear 中添加以下行

      self.navigationController?.navigationBar.shadowImage = UIImage()
      

      【讨论】:

        【解决方案4】:
        for parent in self.navigationController!.navigationBar.subviews {
                for childView in parent.subviews {
                    if(childView is UIImageView) {
                        childView.removeFromSuperview()
                    }
                }
            }
        

        【讨论】: