iOS navigationbar的高度可以修改吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS navigationbar的高度可以修改吗相关的知识,希望对你有一定的参考价值。

参考技术A http://blog.csdn.net/zhiganglet/article/details/37566975
答案是可以修改的。
UINavigationBar *bar = [self.navigationController navigationBar];
CGFloat navBarHeight = 35.0f;
CGRect frame = CGRectMake(0.0f, 20.0f, 320.0f, navBarHeight);
[bar setFrame:frame];

你新建一个工程,将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.本回答被提问者和网友采纳

如何通过动画使navigationBar的高度变为22?

【中文标题】如何通过动画使navigationBar的高度变为22?【英文标题】:How to make the navigationBar's height became 22 with an animation? 【发布时间】:2014-01-01 06:35:45 【问题描述】:

我想让navigationBar的高度变成22并带有动画,我的代码就像follow一样,为什么它不起作用?

CGMutablePathRef path = CGPathCreateMutable();

CGRect rect = self.navigationController.navigationBar.frame;
CGPathAddRect(path, NULL, rect);
rect.size.height = 22;
CGPathAddRect(path, NULL, rect);

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"scale"];
[animation setPath:path];
[animation setDuration:1.0];

[animation setAutoreverses:YES];
CFRelease(path);
[self.navigationController.navigationBar.layer addAnimation:animation forKey:NULL];

【问题讨论】:

【参考方案1】:

我在 *** 上发现了一个像我一样的问题,该问题的 url 是 Animating Frame with CoreAnimation

他们说帧不能用CAKeyframeAnimation改变。那可能是一个错误,或者CAKeyframeAnimation最初无法实现。

这么久了,我没有答案。也许我的问题表达不清楚,或者其他原因。 所以,在那个状态下结束问题。

【讨论】:

以上是关于iOS navigationbar的高度可以修改吗的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 中使用 NavigationBar 背景图像 44px 高度更改状态栏背景?

ios怎么设置navigationbar的titleview的宽度

像在 iOS 7 日历应用中一样设置 UINavigationBar 高度

IOS系统控件高度(转)

iOS 11 - Navigationbar 大标题自定义偏移

更改 iOS Xamarin 表单上的导航栏高度?