所以我正在构建一个iOS应用程序,并且我将我的UINavigationBar定制为高于默认大小。然而,出现了一些问题。
我的内容就像UINavigationBar的默认高度一样。这导致我更高的UINavigationBar在y = 0处的任何视图实际上被隐藏或部分隐藏。我必须手动向下查看正确的偏移量,这不是一个非常大的问题,但我很好奇是否有人找到了解决这个问题的方法。基本上我的UINavigationBar被视为具有更大背景图像的普通UINavigationBar。
如果被点击的部分低于普通UINavigationBar的典型44px底部,则我的UINavigationBar中的任何视图/按钮都不可点击。正常范围内的任何内容都可以正常工作,但低于44px标记则不会注册。再次,就好像我的UINavigationBar被应用程序视为具有正常高度但背景图像较大的应用程序。这是一个非常关键的问题,我真的需要解决。
以下是修改我的UINavigationBar的代码:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navBarBackground_iPhone.png"] forBarMetrics:UIBarMetricsDefault];
[self.navController.navigationBar setBackgroundColor:[UIColor whiteColor]];
[self.navController.navigationBar setFrame:CGRectMake(0, 0, self.frame.size.width, 72)];
在我的UINavigationController被分配并使用根视图控制器初始化之后,在我的主窗口-makeKeyAndVisible
中执行此操作。背景图像宽320像素,高72像素(@ 2x版本的两倍)。
正如你所看到的,我试图在这里设置UINavigationBar的高度,在这部分代码之后它似乎没有坚持。它恢复到44px。
我尝试过继承UINavigationBar失败了。非常感谢任何帮助。
答案 0 :(得分:0)
尝试继承UINavigationBar并覆盖以下方法:
- (void)drawRect:(CGRect)rect
{
int heightYouWant = 100;
UIImage *image = [UIImage imageNamed:@"title_bar_bg.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, heightYouWant)];
self.tintColor = [UIColor colorWithRed:1/255.0 green:62/255.0 blue:130/255.0 alpha:1];
}
答案 1 :(得分:0)
将此方法添加到UINavigationBar的子类中:
- (void)layoutSubviews {
[super layoutSubviews];
CGRect barFrame = self.frame;
barFrame.size.height = heightYouWant;
self.frame = barFrame;
}