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

  • 本文关键字:按钮 导航 UINavigation 何减小 iphone
  • 更新时间 :
  • 英文 :


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

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

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

所以请告诉我如何做这个。

提前感谢...

您需要注意的是,导航控制器管理整个视图层次结构。当您具有 ViewControllerA 时,您可以在其中更改导航控制器高度的导航栏,然后将 ViewControllerB 推送到该导航控制器的堆栈上,您实际上是在查看相同的导航栏。您需要在 ViewControllerB 中将高度更改回原始高度。

我不确定您所说的"分开后退按钮并放在导航栏之前"是什么意思。你有图片还是可以澄清这个问题?

更新: 根据您的评论,您试图实现的目标是可能的,但是一个坏主意。UINavigationController的导航栏跨越屏幕的整个宽度。无论缩短此栏的宽度以在其左侧显示按钮的技术可行性如何,这都可以说侵犯了 HIG,HIG 需要标准使用标准 iOS 功能;即导航栏应始终在任一方向上跨越设备的宽度。如果您希望用不同的按钮替换标准的后退按钮,只需替换 leftNavigationItem 即可,即

self.navigationItem.leftNavigationItem = <SomeUIBarButtonItem>;

您可能还想设置 hidesBackButton = YES。

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

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

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