如何减小导航栏大小以及如何将后退按钮与导航栏分开

时间:2012-04-06 12:04:55

标签: iphone

我正在开发一个应用程序。我需要减少UINavigationBar大小,为此我使用下面的代码。

CGFloat navBarHeight = 10.0f;    
CGRect frame = CGRectMake(50.0f, 0.0f, 320.0f, navBarHeight);
[self.navigationController.navigationBar setFrame:frame];

但是当我转到下一页时,该页面的Navigationbar也发生了变化。但我只需要更改一页。我想在导航栏之前分开后退按钮和位置。所以我在UINavigationBar之前放置了一个按钮。但是我没有执行它的操作。

所以请告诉我如何做到这一点。

提前致谢...

2 个答案:

答案 0 :(得分:0)

您需要在每个页面中更改导航栏的大小。 关于返回按钮,我使用了这个解决方案:

-(void)returnButton:(id)sender
{
    [self.navigationController popToRootViewControllerAnimated:YES];
}

答案 1 :(得分:0)

您需要注意的是导航控制器管理整个视图层次结构。如果你有ViewControllerA,你在其中改变导航控制器高度的导航栏,然后将ViewControllerB推到该导航控制器的堆栈上,你就可以有效地查看相同的导航酒吧。您需要在ViewControllerB中将高度更改回原始高度。

我不确定你的意思是“将后退按钮分开并放在导航栏之前”。你有照片还是可以澄清这个问题?

更新 根据您的评论,您想要实现的目标是可能的,但这是一个糟糕的主意。 UINavigationController的navigationBar跨越整个屏幕宽度。无论缩短此条的宽度以显示其左侧按钮的技术可行性,这可能会侵犯HIG,这需要标准使用标准的iOS功能;即导航栏应始终以任一方向跨越设备的宽度。如果您希望使用不同的按钮替换标准后退按钮,可以通过简单地替换leftNavigationItem来实现,即

self.navigationItem.leftNavigationItem = <SomeUIBarButtonItem>;

你可能也想设置hidesBackButton = YES。

更新2: 我在一个小型Xcode项目中对此进行了测试,您可以更改导航栏的宽度。它看起来很傻,但它是可能的。但是,如果使用nib并在该nib上设置NavigationBar属性,则将按钮添加到视图控制器的视图时,必须将框架的y值设置为负数,以使其与导航栏保持一致。即使如此,在此按钮上设置文本或目标/操作似乎也不起作用。导航栏可能会为自己保留该宽度。从笔尖中删除导航栏设置并再次尝试仍然不能执行此操作。导航栏(或者,实际上是导航控制器,最有可能)的存在似乎阻止了其他任何东西在该区域内接收触摸事件。