在iOS的导航栏上,默认设置的leftBarButtonItem
和rightBarButtonItem
的边距都是16
self.navigationItem.leftBarButtonItem = [self barButtonItem:@"left1"];
self.navigationItem.rightBarButtonItem = [self barButtonItem:@"rightItem1"];
- (UIBarButtonItem *)barButtonItem:(NSString *)title {
UIButton *btn = [UIButton buttonWithType:0];
[btn setTitle:title forState:UIControlStateNormal];
[btn sizeToFit];
btn.backgroundColor = LGColorOfRamdom;
return [[UIBarButtonItem alloc] initWithCustomView:btn];
}
如果需要修改间距,我们会这样做:
self.navigationItem.leftBarButtonItems = @[[self fixedSpaceItem:-8], [self barButtonItem:@"left1"]];
self.navigationItem.rightBarButtonItems = @[[self fixedSpaceItem:-8], [self barButtonItem:@"rightItem1"]];
- (UIBarButtonItem *)fixedSpaceItem:(CGFloat)space {
UIBarButtonItem *fixedItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
fixedItem.width = space;
return fixedItem;
}
iOS 11:
虽然设置了间距,但是只是对内部的视图的大小做了处理,
left1
按钮位置并没有改变iOS 11以前:
iOS 11以前能够达到我们想要的目的
对比两者的视图结构
iOS 11中,left1
先由UITAmicadaptorView
包裹,再包裹一层UIButtonBarStackView
,最后添加在UINavigationBarContentView
上;而iOS 11 以前,是直接添加在UINavigationBar
上的