0

我想使用自定义标头而不是默认标头UINavigationBar。我能够做得很好,直到我遇到一个条件来保持与 iOS6 的向后兼容性。我在这里有我以前的问题,没有答案。

最近对于 Facebook 应用程序,我可以在 iOS7 中看到,蓝色标题栏对齐良好。对我来说,它看起来像是一个自定义标题,我不确定。Facebook-标题

现在的问题是,我坚持执行我的自定义应用程序标头。我的自定义标题高度是 48 像素,位于顶部的“网络状态栏”后面,我只得到大约 35 像素,因为其余部分位于“网络状态栏”后面,就像这样。

这是我要实现的目标。

  • 我想要一个自定义标题。- 完毕
  • 我不想使用UINavigationBar. - 完毕
  • 我想要对 iOS 5.0 到 7.0 的支持 - 卡住了

这是我使用自定义标头时的外观

这是它的外观UINavigationBar

如何使应用标题看起来像带有“自定义标题”的“FaceBook 标题”,而不会进入“顶部网络标题栏”下方。如果我增加状态栏的高度,它在 iOS6 及更早版本中看起来会很奇怪,但在 iOS7 中很合适。我想选择正确的方法。

非常感谢任何专家的帮助。

4

2 回答 2

2

您需要将 UIToolbar 放在 xib 中,

并在工具栏中添加背景图像,

 self.navigationController.navigationBarHidden = YES;

[self.toolBar setBackgroundImage:[UIImage imageNamed:@"background.png"] forToolbarPosition:UIToolbarPositionAny barMetrics: UIBarMetricsDefault];

添加栏按钮,

UIButton *facebookButton =  [UIButton buttonWithType:UIButtonTypeCustom];
[facebookButton setImage:[UIImage imageNamed:@"facbookBarImage.png"] forState:UIControlStateNormal];
[facebookButton addTarget:self action:@selector(action:)forControlEvents:UIControlEventTouchUpInside];
[facebookButton setFrame:CGRectMake(0, 0, 53, 31)];
UIBarButtonItem *facebookBarButton = [[UIBarButtonItem alloc] initWithCustomView: facebookButton];

self.toolBar.items = [NSArray arrayWithObjects: facebookBarButton,nil];
于 2013-09-30T05:23:42.243 回答
0

在对兼容性进行了一些研究之后,我遇到了一个可行的解决方案,可以制作一个没有UINavigationBar并实现我想要的自定义标题。随意使用这种方法。

这是我的结果:iOS7旧版 iOS

方法是弄清楚edgesForExtendedLayout(在 iOS 7 中可用)。如果我们在 iOS7 上,然后确定“自定义标题”的高度(可能比我们在旧版本中保留的高 10 像素,以便在“顶部网络状态栏”下方填充额外的 10 像素)。

  • edgesForExtendedLayout找出这里的 iOS7 兼容性

    CGFloat y;
    if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
        y= 58;
    }else {
        y = 48;
    }
    
  • 制作高度为yhere的自定义标题

    self.customHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, appDimensions.width, y)];
    
  • 自定义按钮在customHeaderView这里

    self.sideMenuButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.sideMenuButton setFrame:CGRectMake(0, y-45, 45, 45)];
    

所以现在如果我在 iOS7 上运行它,我会看到我的标题有足够的高度 48 像素(比我们在触摸区域的人机界面指南(44 x 44)中的高度)即使是 10 像素也在“顶部网络状态栏”下方) .

如果我在 iOS < iOS7 中运行它,我将拥有 48 像素的自定义标题,从“顶部网络状态栏”的正下方开始

希望这对其他人有帮助。

于 2013-09-30T06:51:09.217 回答