关于设置navigationBar高度的问题

来源:互联网 发布:瑞斯康微电子知乎 编辑:程序博客网 时间:2024/04/30 13:52

最近在做的项目有这个需求,需要中navigationBar上显示较多的内容,而系统中默认navigationBar的高度为44。

于是便在网上查找相关的内容,但很多都达不到预期及结果。


方法一:在《如何自定义NavigationBar的高度》这篇文章中谈到如下的方法:

-(void)viewWillAppear:(BOOL)animated{    [super viewWillAppear:animated];    CGRect rect = self.navigationController.navigationBar.frame;    self.navigationController.navigationBar.frame = CGRectMake(rect.origin.x,rect.origin.y,rect.size.width,84);
    [self.navigationController.navigationBar setTitleVerticalPositionAdjustment:-40.0 forBarMetrics:UIBarMetricsDefault];    [self.navigationItem.leftBarButtonItem setBackgroundVerticalPositionAdjustment:-40.0 forBarMetrics:UIBarMetricsDefault];}-(void)viewWillDisappear:(BOOL)animated{    [super viewWillDisappear:animated];    CGRect rect = self.navigationController.navigationBar.frame;    self.navigationController.navigationBar.frame = CGRectMake(rect.origin.x,rect.origin.y,rect.size.width,44);
    [self.navigationController.navigationBar setTitleVerticalPositionAdjustment:0.0 forBarMetrics:UIBarMetricsDefault];}
但尝试这么做了,结果导航栏无动于衷。


方法二:

    UINavigationBar *bar = [self.navigationController navigationBar];    CGFloat navBarHeight = 35.0f;       CGRect frame = CGRectMake(0.0f, 20.0f, 320.0f, navBarHeight);    [bar setFrame:frame];
其实这种方法跟方法一是一样的。


方法三:后来无意间想到,可以自定义导航栏,于是乎就这么做了:

    UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44 + 38)];    UIImageView *imageView = [[UIImageView alloc] initWithFrame:customView.frame];    imageView.image = [UIImage imageNamed:@"caidanlan"];    [customView addSubview:imageView];    [self.navigationController.navigationBar addSubview:customView];
于是,通过addSubview的方式达到预想的结果。





0 0
原创粉丝点击