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

时间:2013-09-20 20:44:14

标签: ios uinavigationcontroller uinavigationbar ios7

我需要像iOS 7中的日历一样使用NavigationBar。

我注意到NavigationBar背后没有任何模糊。

Calendar app iOS7

从一个细节视图返回时。只是“主要”NavigationBar是“正常”。

Calendar app iOS7

任何人都知道如何做到这一点?

我试过这样做:

[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, 320, 88)];

但这会将标题和按钮移动44px。

我有另一个想法是在navigationController.navigationBar下添加另一个导航栏,但我在第一个导航栏下面有一行。有谁知道如何删除它?

谢谢!

1 个答案:

答案 0 :(得分:5)

我修好了!

我在“主”NavigationBar下放置了另一个NavigationBar。删除了“主”NavigationBars阴影线。

删除NavigationBar半透明并将背景颜色设置为97%白色。 (这是标准的)。如果半透明是YES,当内容落后时,它会显得很奇怪。

[self.navigationController.navigationBar setTranslucent:NO];
[self.navigationController.navigationBar setBarTintColor:[UIColor colorWithWhite:0.97 alpha:1]];
[NavigationBarExtension setTranslucent:NO];
[NavigationBarExtension setBarTintColor:[UIColor colorWithWhite:0.97 alpha:1]];

删除该行的代码(在viewWillAppear中执行此操作:因为如果您按下其他视图控制器,该行必须返回)

- (void)viewWillAppear:(BOOL)animated {
    for (UIView *view in self.navigationController.navigationBar.subviews) {
        if ([view isKindOfClass:NSClassFromString(@"_UINavigationBarBackground")]) {
            for (UIView *view2 in view.subviews) {
                if ([view2 isKindOfClass:[UIImageView class]] && view2.frame.size.height < 1) {
                    [view2 setHidden:YES];
                    break;
                }
            }
        }
    }
}

在推送其他视图控制器时显示该行的代码:

- (void)viewWillAppear:(BOOL)animated {
    for (UIView *view in self.navigationController.navigationBar.subviews) {
        if ([view isKindOfClass:NSClassFromString(@"_UINavigationBarBackground")]) {
            for (UIView *view2 in view.subviews) {
                if ([view2 isKindOfClass:[UIImageView class]] && view2.frame.size.height < 1) {
                    [view2 setHidden:NO];
                    break;
                }
            }
        }
    }
}