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

Gus*_*lad 21 uinavigationbar uinavigationcontroller ios ios7

我需要像iOS 7中的日历中的NavigationBar.

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

日历应用iOS7

从一个细节视图返回时.这只是NavigationBar"正常" 的"主要".

日历应用iOS7

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

我试过这样做:

[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, 320, 88)];
Run Code Online (Sandbox Code Playgroud)

但这会将标题和按钮向下移动44px.

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

谢谢!

Gus*_*lad 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]];
Run Code Online (Sandbox Code Playgroud)

删除该行的代码(在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;
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

- (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;
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 你有没有进入应用程序商店?你正在访问私人课程.还有其他一些方法可以做到这一点.您可以创建自定义导航栏并调整sizeToFit中的高度,也可以通过将索引0处的栏的子视图设置为alpha 0来隐藏栏的背景(可能不是最安全但它可以执行您想要的操作).您需要嵌入另一个栏的原因是,当您调整其大小时,Apple已将项目绑定到栏的底部,您现在必须将所有项目设置代理到具有隐藏背景的新内部栏. (6认同)