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

时间:2016-10-31 08:27:19

标签: ios swift

我想重复header部分所有view controller scene。标题部分表示绿色视图和标签(" AMAR LIFE")

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

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

第1步:将navigationController拖到storyBoard中并删除tableView rootViewcontroller随附naviagtionController。将您的NavigationController连接到tabBarController.Now,NavigationController可用于您的所有视图。

注意:您的storyBoard布局应该如下图所示..

enter image description here

第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)

}

输出:

enter image description here

答案 2 :(得分:-2)

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

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"
}

此外,如果您想避免代码重复并且做得更好,只需创建一个父UIview并在其中编写此方法,然后在所有其他视图中继承它。然而,两种解决方案都可以 您可以根据需要更改标题和图像。 感谢