如何自定义NavigationBar的高度

来源:互联网 发布:java软件安装教程 编辑:程序博客网 时间:2024/06/06 07:33

在Xcode中状态栏占20个点,navigationBar占44个点,有时候隐藏掉状态栏后能会出现这样的情况

图片的大小已经超出了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>

这时结果变成了这样:

图片已经上移了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的界面会往下闪一下,如果有大神可以解决请告诉我!







1 0
原创粉丝点击