导航栏右按钮放置不正确

时间:2018-07-20 07:13:37

标签: ios objective-c uinavigationcontroller uitabbarcontroller rightbarbuttonitem

我实现了一个包含四个项目的UITabBarController

我从ViewController设置了初始AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    HomeTabBarViewController* homeVC = [[HomeTabBarViewController alloc] init];

    [self.window setRootViewController:homeVC];
    [self.window makeKeyAndVisible];

return YES;
}

这里是HomeTabBarViewController ViewDidLoad代码:

UIViewController *view1 = [[UIViewController alloc] init];
    [view1.view setBackgroundColor:[UIColor redColor]];
UIViewController *view2 = [[UIViewController alloc] init];
    UINavigationController * centerNav=[[UINavigationController alloc]initWithRootViewController:view1];
    HomePagingViewController * view3=(HomePagingViewController*)[storyboard instantiateViewControllerWithIdentifier:@"HomePagingViewController"];
     UINavigationController * centerNav3=[[UINavigationController alloc]initWithRootViewController:view3];
    UIViewController *view4 = [[UIViewController alloc] init];
    UINavigationController * centerNav4=[[UINavigationController alloc]initWithRootViewController:view4];
    [view2.view setBackgroundColor:[UIColor greenColor]];
    [view3.view setBackgroundColor:[UIColor purpleColor]];
    [view4.view setBackgroundColor:[UIColor grayColor]];
    NSMutableArray *tabViewControllers = [[NSMutableArray alloc] init];
    [tabViewControllers addObject:centerNav];
    [tabViewControllers addObject:view2];
    [tabViewControllers addObject:centerNav3];
    [tabViewControllers addObject:centerNav4];

    [self setViewControllers:tabViewControllers];
    view1.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Home"
                                  image:[UIImage imageNamed:@"home_tab_item.png"] selectedImage:[UIImage imageNamed:@"home_tab_item_active.png"]] ;
    view2.tabBarItem =
    [[UITabBarItem alloc] initWithTitle:@"Bookmark"
                                  image:[UIImage imageNamed:@"bookmark_tab_item.png"] selectedImage:[UIImage imageNamed:@"bookmark_tab_item_active.png"]];
    view3.tabBarItem =
    [[UITabBarItem alloc] initWithTitle:@"Paper"
                                  image:[UIImage imageNamed:@"paper_tab_item.png"] selectedImage:[UIImage imageNamed:@"paper_tab_item_active.png"]];
    view4.tabBarItem =
    [[UITabBarItem alloc] initWithTitle:@"More"
                                  image:[UIImage imageNamed:@"menu_tab_item.png"] selectedImage:[UIImage imageNamed:@"menu_tab_item_active.png"]];

HomePagingViewController ViewDidLoad中,我像代码中一样设置了导航

-(void)navigationSetUp{
 self.navigationController.navigationBar.translucent=NO;

    UIBarButtonItem * settingBtn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"settings.png"] style:UIBarButtonItemStylePlain target:self action:@selector(menuHandler:)];
    UIBarButtonItem * searchBtn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"settings.png"] style:UIBarButtonItemStylePlain target:self action:@selector(menuHandler:)];
    self.navigationItem.leftBarButtonItem = settingBtn;
    self.navigationItem.rightBarButtonItem = searchBtn;
    self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ie_New_logo.png"]];
}

此后,当我更改HomePagingViewController的标签时,导航右按钮未正确放置,则从右开始没有空白。

参考图片: enter image description here

请帮助。

2 个答案:

答案 0 :(得分:1)

我解决了这个问题,代码没有问题。实际上,对于Epaper,我们使用了第三方SDK,因此会发生此问题。我删除了SDK,现在代码可以正常工作。

答案 1 :(得分:0)

您应该考虑UIBarButtonSystemItemFixedSpace的作用。

  • 例如:
    UIBarButtonItem * space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];

-

  • 为什么使用系统导航栏?自定义导航栏很不错!例如:this