导航菜单不在屏幕的整个宽度

时间:2015-05-23 03:25:35

标签: objective-c iphone ios8

我在目标C中为ios 8编写了一个应用程序,我的导航栏有一个恼人的边缘,导致它向左移动~20个像素为leftBarButtonItem,~20个左边为rightBarButtonItem,如下所示下面的图片。我尝试过使用其他帖子的负片垫片无济于事。有任何想法吗?

(我试图在不使用故事板或xib的情况下这样做。)

enter image description here

以下是代码:

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控制器中调用。解决方案是添加viewDidAppear并在该函数中添加导航控制器。

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

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:0)

似乎你无法改变minimum margins。您可以将toolbar_temp添加到导航栏:

[self.navigationController.navigationBar addSubview:toolbar_temp];

或添加到self.view:

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