开发者社区> 问答> 正文

iOS navigationbar的高度可以修改吗?

如题iOS 中navigationbar的高度可以修改吗?

展开
收起
a123456678 2016-07-20 17:04:40 3072 0
1 条回答
写回答
取消 提交回答
  • 答案是可以修改的。

    修改前:
    screenshot
    修改后:
    screenshot
    你新建一个工程,将UIWindow的rootViewController设置为一个UINavigationController的实列,然后自定义一个控制器CustomVC,在CustomVC中写如下代码:

    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
    
        NSLog(@"修改前");
        [self printViewHierarchy:self.navigationController.navigationBar];
    
        //修改NavigaionBar的高度
        self.navigationController.navigationBar.frame = CGRectMake(0, 20, 320, 100);
    
        NSLog(@"\n修改后");
        [self printViewHierarchy:self.navigationController.navigationBar];
    }
    
    - (void)printViewHierarchy:(UIView *)superView
    {
        static uint level = 0;
        for(uint i = 0; i < level; i++){
            printf("\t");
        }
    
        const char *className = NSStringFromClass([superView class]).UTF8String;
        const char *frame = NSStringFromCGRect(superView.frame).UTF8String;
        printf("%s:%s\n", className, frame);
    
        ++level;
        for(UIView *view in superView.subviews){
            [self printViewHierarchy:view];
        }
        --level;
    }
    输出结果:
    
    UINavigationBar:{{0, 20}, {320, 44}}
        _UINavigationBarBackground:{{0, 0}, {320, 44}}
            UIImageView:{{0, 44}, {320, 3}}
        UINavigationItemView:{{160, 22}, {0, 0}}
    2013-10-29 20:24:36.900 Nav[8957:907] 
    
    修改后
    UINavigationBar:{{0, 20}, {320, 100}}
        _UINavigationBarBackground:{{0, 0}, {320, 100}}
            UIImageView:{{0, 100}, {320, 3}}
        UINavigationItemView:{{160, 22}, {0, 0}}

    可以看到UINaigationBar的高度已经从44变到了100. 如果还有疑问,请追问。没有的话,请采纳,谢谢!

    2019-07-17 19:59:04
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载