Objective c 导航菜单不在屏幕的全宽范围内

Objective c 导航菜单不在屏幕的全宽范围内,objective-c,iphone,ios8,Objective C,Iphone,Ios8,我正在用objective C为ios 8编写一个应用程序,我的导航栏有一个恼人的边距,导致它向右移动了20个像素(leftBarButtonItem),向左移动了20个像素(rightBarButtonItem),如下图所示。我已经尝试过在其他一些帖子中使用负间隔符,但没有效果。有什么想法吗 我试图在不使用故事板或XIB的情况下实现这一点 代码如下: UIToolbar* toolbar_temp = [[UIToolbar alloc] init]; toolbar_temp.frame =

我正在用objective C为ios 8编写一个应用程序,我的导航栏有一个恼人的边距,导致它向右移动了20个像素(leftBarButtonItem),向左移动了20个像素(rightBarButtonItem),如下图所示。我已经尝试过在其他一些帖子中使用负间隔符,但没有效果。有什么想法吗

我试图在不使用故事板或XIB的情况下实现这一点

代码如下:

UIToolbar* toolbar_temp = [[UIToolbar alloc] init];
toolbar_temp.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 45);
toolbar_temp.barTintColor= [UIColor blackColor];

NSMutableArray *items = [[NSMutableArray alloc] init];
UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

UIImage *camimage = [UIImage imageNamed:@"cancel"];
UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithImage:camimage style:UIBarButtonItemStylePlain    target:self     action:nil];

[items addObject:spaceItem ];
[items addObject:customItem ];
[items addObject:spaceItem ];

[toolbar_temp setItems:items animated:NO];
UIBarButtonItem *allButton = [[UIBarButtonItem alloc] initWithCustomView:toolbar_temp];
self.navigationItem.leftBarButtonItem = allButton;
编辑: 我不确定这是否给出了任何提示,但出于某种原因,这是可行的:

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
但这并不是:

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
解决方案: 最后我自己找到了解决办法。问题是我有一个tabbar控制器,其中一个视图是导航控制器。导航控制器只能在viewDidload中设置,而不能在tabbar控制器中调用。解决方案是添加ViewDidDisplay并在该函数中添加导航控制器

- (void)viewDidAppear:(BOOL)animated{[self addToolbar];}

谢谢大家的帮助

看来你无法改变这一点。您可以做的是将工具栏添加到导航栏:

[self.navigationController.navigationBar addSubview:toolbar_temp];
或添加到self.view:

self.navigationController.navigationBarHidden = YES;
[self.view addSubview:toolbar_temp];

要将其添加到哪个视图?该应用程序是一个选项卡式视图控制器,这是设置为导航控制器的第一个视图。当我尝试调试时,我将其设置为常规工具栏,而不是导航工具栏,并且工作正常。如果这有帮助的话。我想看看你是如何将UIToolbar添加到你的视图中的。我认为您可能需要隐藏导航控制器附带的默认项,或者直接将工具栏按钮项添加到默认项,而不是添加工具栏。也许如果你再多展示一下你的设置,我们可以发现奇怪的20px是从哪里来的。好吧,我做了更多的调试。我正在通过使用initWithNibName初始化来设置选项卡栏项目的图像。当我这样做时,我似乎无法正确设置导航栏中的项目,但我可以正确初始化选项卡栏项目。为了使它更混乱,如果我没有initWithNibName,我可以正确地初始化导航栏-在这种情况下,调用viewdidload,导航项与它们应该的一样,但是我的选项卡栏项没有正确初始化。这是否有足够的帮助,或者我应该发布更多的代码?谢谢你的想法,但没有骰子=/