如何重用标题部分的所有场景?

我想重用header部分所有view controller scene .header部分意味着绿色视图和标签(“AMAR LIFE”)

这是我的第一个视图控制器场景

这是我的第一个视图控制器文档大纲

请尝试以下步骤以在所有视图中显示您的标题。

第1步:拖动一个navigationController到你的storyBoard并删除tableView rootViewcontroller自带的naviagtionController.Connect你的NavigationController到你的tabBarController.Now,NavigationController可用于所有的视图。

注意:你的故事板布局应该像下面的图片

在这里输入图像说明

第2步:实现以下代码到您的FirstTabBarController。

  override func viewDidLoad() { super.viewDidLoad() // Apply transparency to NavigationBar. navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) navigationController?.navigationBar.shadowImage = UIImage() //Setting up scanView background let barView = UIView(frame: CGRect(x:0, y:0, width:view.frame.width,height: (navigationController?.navigationBar.frame.height)! + UIApplication.shared.statusBarFrame.height)) barView.backgroundColor=UIColor.green // set any colour you want.. barView.layer.borderColor = UIColor.black.cgColor barView.layer.borderWidth = 3 navigationController?.navigationBar.addSubview(barView) //Setting up labelView let label = UILabel() label.frame = CGRect(x:25, y:5, width:view.frame.width - 50 , height:((navigationController?.navigationBar.frame.height)! + UIApplication.shared.statusBarFrame.height) - 10) label.text = "AMAR LIFE" label.textAlignment = .center label.textColor = .black label.font = UIFont(name: "HelveticaNeue-medium", size: CGFloat(40)) label.layer.borderColor = UIColor.black.cgColor label.layer.borderWidth = 3 barView.addSubview(label) } 

输出:

在这里输入图像说明

子类UITabBarController。 使绿色视图成为标签栏控制器主视图的子视图 。 每当选定的视图控制器发生变化(或发生任何其他事情)时,请继续将绿色视图放在前面。 (更好的是,将绿色视图变成一个层,而不是一个视图,并给它一个更高的z位置,以便它自动浮在所有子视图的前面。)

您需要在每个视图控制器中添加以下方法

 override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(true) self.navigationController?.isNavigationBarHidden = false self.navigationController?.navigationBar.setBackgroundImage(#imageLiteral(resourceName: "123"), for: .default) self.title = "Hi I am tittle" } 

另外,如果你想避免代码重复,做得更好,只需创build一个父UIview,然后在其中写入该方法,然后在所有其他视图中inheritance它。 但是这两个解决scheme都很好 你可以根据你的需要改变标题和图像。 谢谢