自定义UINavigationBar高度问题

时间:2013-02-08 16:33:17

标签: iphone ios objective-c height uinavigationbar

所以我正在构建一个iOS应用程序,并且我将我的UINavigationBar定制为高于默认大小。然而,出现了一些问题。

  1. 我的内容就像UINavigationBar的默认高度一样。这导致我更高的UINavigationBar在y = 0处的任何视图实际上被隐藏或部分隐藏。我必须手动向下查看正确的偏移量,这不是一个非常大的问题,但我很好奇是否有人找到了解决这个问题的方法。基本上我的UINavigationBar被视为具有更大背景图像的普通UINavigationBar。

  2. 如果被点击的部分低于普通UINavigationBar的典型44px底部,则我的UINavigationBar中的任何视图/按钮都不可点击。正常范围内的任何内容都可以正常工作,但低于44px标记则不会注册。再次,就好像我的UINavigationBar被应用程序视为具有正常高度但背景图像较大的应用程序。这是一个非常关键的问题,我真的需要解决。

  3. 以下是修改我的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失败了。非常感谢任何帮助。

2 个答案:

答案 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;
}