我想使用自定义标头而不是默认UINavigationBar
。我能够做得很好,直到我遇到一个条件来保持与iOS6的向后兼容性。我有上一个问题here,没有回答。
最近对于Facebook App,我可以在iOS7中看到,蓝色标题栏很好地对齐。对我而言,它看起来像是一个自定义标题,我不确定。 FaceBook-Header
现在的问题是,我坚持使用我的自定义应用程序标头的实现。我的自定义标题高度为48px,位于顶部和“顶部”的“网络状态栏”之后。我只得到大约35像素,因为其余的都在“网络状态栏”like this.
之后这是我实现的目标。
UINavigationBar
。 - 完成以下是我使用Custom header
时的样子 的内容如何使用“自定义标题”使应用标题显示为“FaceBook标题”而不会出现在“顶部网络标题栏”下方。如果我增加状态栏的高度,它在iOS6&中会显得很奇怪。较旧,但在iOS7中非常适合。我想选择正确的方法。
非常感谢任何专家帮助。
答案 0 :(得分: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];
答案 1 :(得分:0)
经过一些兼容性研究后,我遇到了一个有效的解决方案,即制作一个没有UINavigationBar
&的自定义标题。实现我想要的。随意使用这种方法。
方法是找出edgesForExtendedLayout
(在iOS 7中可用)。如果我们在iOS7上然后决定“自定义标题”的高度(可能比我们在旧版本中保留的高10个像素,以便在“最高网络状态栏”下填充额外的10P像素。)
找出edgesForExtendedLayout
的iOS7兼容性
CGFloat y;
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
self.edgesForExtendedLayout = UIRectEdgeNone;
y= 58;
}else {
y = 48;
}
制作高度为y
的自定义标题
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上运行它,我看到我的标题有足够的高度48pixel(超过我们在触摸区的人机界面指南(44 x 44)中所拥有的那个),即使是10个像素位于“顶级网络”之下状态栏)。
如果我在iOS中运行它< iOS7,我将自定义标题为48 Pixel,从“顶级网络状态栏”
开始希望这有助于其他人。