self.navigationController.navigationBar.translucent(這個是設置半透明效果,當該屬性設置為YES時,導航欄有半透明效果剖膳,會在bar上添加一層半透明的圖層,當該屬性為NO時魏颓,導航欄bar背景為白色,如果bartintColor會設置成背景色)
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];(這句話是把這個透明的圖層設置為沒有,bartintcolor 消失)
[self.navigationController.navigationBar setShadowImage:[UIImage new]];這句話是把導航欄底下的黑線設置為沒有
self.extendedLayoutIncludesOpaqueBars = YES;UIViewController的View和導航欄的顯示是這樣的, 默認的, 如果導航欄設置為有透明度的(默認就是半透明的), UIViewController的View就會被導航欄覆蓋
如果不想被覆蓋, 可以使用以下代碼解決(控制器中調用):
self.edgesForExtendedLayout = UIRectEdgeNone;
反之, 如果導航欄是不透明的, 默認UIViewController的View就會往下移, 在導航欄下顯示, 如果不想往下移, 可以實現(xiàn)如下代碼(控制器中調用):
self.extendedLayoutIncludesOpaqueBars = YES;
[UINavigationBar appearance]可以設置全局的導航欄設置
UIView *in = [[UIView alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 64)];
UIColor *color = [UIColor clearColor];
in.backgroundColor = color;
[self.navigationController.navigationBar.subviews.firstObject insertSubview:in atIndex:0];
創(chuàng)建一個View插進navigationBar的backgroupView就可以改變顏色,當這個view透明時吱晒,translucent不能為NO詳細看第一條