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 高度