天天看點

如何自定義NavigationBar的高度

在Xcode中狀态欄占20個點,navigationBar占44個點,有時候隐藏掉狀态欄後能會出現這樣的情況

如何自定義NavigationBar的高度

圖檔的大小已經超出了navigationBar的高度了,非常難看,預設情況下navigationBar的高度是鎖死的,但是我們還是可以通過代碼來改變它的高度,這在實際開發中非常的實用.

首先說明幾個個方法:

<span style="font-size:18px;"><span style="font-size:24px;">- (void)setBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR; </span></span>
           

官方描述:Sets the background vertical position offset for given bar metrics.

The background vertical position offset for barMetrics.

設定背景垂直位置對于給定的barMetrics的偏移量.

但是這個方法比較特殊,需要在viewWillAppear中使用才有效果:

<span style="font-size:18px;">//視圖将要出現
-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    
    [self.navigationItem.leftBarButtonItem setBackgroundVerticalPositionAdjustment:-7.0 forBarMetrics:UIBarMetricsDefault];
    [self.navigationItem.rightBarButtonItems[1] setBackgroundVerticalPositionAdjustment:-7.0 forBarMetrics:UIBarMetricsDefault];
    [self.navigationItem.rightBarButtonItems[0] setBackgroundVerticalPositionAdjustment:-7.0 forBarMetrics:UIBarMetricsDefault];
    
}</span>
           

這時結果變成了這樣:

如何自定義NavigationBar的高度

圖檔已經上移了7個點,下面的白邊已經看不見了,接下來就要提高navigationBar的高度了.

提高navigationBar的高度要用下面的方法:

<span style="font-size:18px;">//視圖已經出現
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    
    //修改NavigaionBar的高度
    self.navigationController.navigationBar.frame = CGRectMake(0, 0, self.navigationController.navigationBar.bounds.size.width, 64);
    
}</span>
           

改變navigationBar的這個方法隻有在viewDidAppear中有使用才有效果,因為視圖在這時才真正出現,結果就成這樣了

如何自定義NavigationBar的高度

這時navigationBar的高度就設定完畢了,但是還是有問題,就切換界面的時候,navigationBar的界面會往下閃一下,如果有大神可以解決請告訴我!