私は2つを持っていますViewControllers。ナビゲーションバーにUIViewを追加します。Push Segueの後にナビゲーションバーにUIViewを追加
私はUINavigationItemアウトレットを作成し、UINavigationItemアウトレットtitleViewにプログラム的に作成のUIViewを追加することにより、第1のナビゲーションバーの上にのUIViewを追加することができます。
コードスニペット(HomeVC - 拳のViewController):
class HomeVC: UIViewController {
@IBOutlet weak var homeNavigationItem: UINavigationItem!
let navBarView = UIView()
let topNavBarLabel = UILabel()
let screenWidth = UIScreen.main.bounds.width
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
navBarView.frame = CGRect(x: 0.0, y: 0.0, width: screenWidth, height: 50.0)
topNavBarLabel.text = "Hello World"
topNavBarLabel.textAlignment = NSTextAlignment.center
topNavBarLabel.textColor = UIColor.white
topNavBarLabel.frame = CGRect(x: 0.0, y: 10.0, width: screenWidth, height: 20.0)
navBarView.addSubview(topNavBarLabel)
homeNavigationItem.titleView = navBarView
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
スクリーンショットホームビュー:今すぐ
私はプッシュ後に同じことをやろうとしていますSecondVCの包み Segue。
コードスニペット(DetailVC - 2番目のViewController):
class DetailsVC: UIViewController {
let navBarView = UIView()
let screenWidth = UIScreen.main.bounds.width
let navBarTopLabel = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
navBarView.frame = CGRect(x: 0.0, y: 50.0, width: screenWidth, height: 50.0)
navBarView.backgroundColor = UIColor.black
navBarTopLabel.frame = CGRect(x: 0.0, y: 10.0, width: screenWidth, height: 20.0)
navBarTopLabel.textColor = UIColor.white
navBarTopLabel.text = "Details Hello"
navBarTopLabel.textAlignment = NSTextAlignment.center
navBarView.addSubview(navBarTopLabel)
self.view.addSubview(navBarView)
self.view.bringSubview(toFront: navBarView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
スクリーンショット詳細表示:
ストーリーボードスクリーンショット:
ビュー階層:
注:は、私は意図的にビューが
作成されていることを確認するために、より多くの0よりも視野にY-位置を割り当てられた。しかし、私はできませんよとUINavigationItemを作成するには、プログラムで作成したビューをビューに追加し、さらにサブビューを前面に表示しようとしています。
注:はい、のサイズUINavigationBarが増加しており、ここに参照してください。Change width/height UINavigationBar embedded in a Navigation Controller