You are close, but you need a negative fixed space. If your other UIBarButtonItems are using custom views, check your frame for these views. Here's an example of adding two right-hand button elements that hug the edge more. In your case, you also want to add a negative space between the buttons.
UIBarButtonItem *negativeSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; negativeSpace.width = -8; UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; backButton.frame = CGRectMake(0, 0, 44, 44); [backButton setImage:[[UIImage imageNamed:@"ic_back"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal]; backButton.imageView.tintColor = [UIColor whiteColor]; [backButton addTarget:self action:@selector(backPressed) forControlEvents:UIControlEventTouchUpInside]; self.backNavButton = [[UIBarButtonItem alloc] initWithCustomView:backButton]; self.backNavButton.enabled = NO; UIButton *forwardButton = [UIButton buttonWithType:UIButtonTypeCustom]; forwardButton.frame = CGRectMake(0, 0, 44, 44); [forwardButton setImage:[forwardImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal]; forwardButton.imageView.tintColor = [UIColor whiteColor]; [forwardButton addTarget:self action:@selector(forwardPressed) forControlEvents:UIControlEventTouchUpInside]; self.forwardNavButton = [[UIBarButtonItem alloc] initWithCustomView:forwardButton]; self.forwardNavButton.enabled = NO; self.navigationItem.rightBarButtonItems = @[negativeSpace,self.forwardNavButton,self.backNavButton];
Nimer source share