1、iOS11以下設置navigationItem的邊距
UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
backView.backgroundColor = [UIColor magentaColor];
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backView];
// 用于控制間距的item
UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
/**
* width為負數時相當于向左移動width數值的距離,為正數時相當于向右移動width數值的距離
* 自己測了下,左邊應該是16px,右邊應該是12px
*/
spaceItem.width = -15;
self.navigationItem.leftBarButtonItems = @[spaceItem,backItem];
2、iOS設置navigationItem的邊距
- (void)viewDidLoad {
[super viewDidLoad];
UIView *backView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(0, 0, 44, 44);
[backButton setImage:[UIImage imageNamed:@"navigation_back"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(backAction:) forControlEvents:UIControlEventTouchUpInside];
[backView addSubview:backButton];
if ([UIDevice currentDevice].systemVersion.floatValue >= 11.0) {
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backView];
} else {
UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
spaceItem.width = -15;
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backView];
self.navigationItem.leftBarButtonItems = @[spaceItem,backItem];
}
}
- (void)viewDidLayoutSubviews{
if ([UIDevice currentDevice].systemVersion.floatValue >= 11.0) {
UINavigationItem *item = self.navigationItem;
NSArray *array = item.leftBarButtonItems;
if (array && array.count) {
// 注意:這里設置的第一個leftBarButtonItem的customeView不能為空,也就是不要設置UIBarButtonSystemItemFixedSpace這種風格的item
UIBarButtonItem *btnItem = array[0];
UIView *view = [[btnItem.customView.superview superview] superview];
NSArray *arrayConstraint = view.constraints;
for (NSLayoutConstraint *constant in arrayConstraint) {
CGFloat space = fabs(constant.constant);
// 非plus手機為16 plus手機為20
if (space == 16 || space == 20) {
constant.constant = 0;
}
}
}
}
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。