iOS 11下调整BarButtonItem与屏幕边缘之间的距离

因为在iOS 11中导航的结构体系发生了变化,请看下面的结构


屏幕快照 2018-02-10 下午12.07.21.png

4.0的尺寸下,第一个rightNavigationItem与屏幕左边缘会有一个16的约束值,当然右边的约束值为-165.5的尺寸下约束值为20(-20)。所以可以通过修改这个约束值,来修改navigationItem与左右屏幕边缘之间的间距值。
如下代码

UIView *bgView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 90, 44)];
    bgView.backgroundColor = [UIColor redColor];
    [bgView addGestureRecognizer:[UITapGestureRecognizer mm_gestureRecognizerWithActionBlock:^(id gestureRecognizer) {
        [self.navigationController popViewControllerAnimated:YES];
    }]];
    bgView.userInteractionEnabled = YES;
    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:bgView];
    self.navigationItem.rightBarButtonItems = @[backItem];
-(void)viewDidLayoutSubviews{

    if (@available(iOS 11.0,*)){
        UINavigationItem * item=self.navigationItem;
        NSArray * array=item.rightBarButtonItems;
        if (array&&array.count!=0){
            UIBarButtonItem * buttonItem=array.firstObject;
            UIView * view =buttonItem.customView.superview.superview.superview;
            NSArray * arrayConstraint=view.constraints;
            for (NSLayoutConstraint * constant in arrayConstraint) {
                if (fabs(constant.constant) ==16 || fabs(constant.constant) ==20) {
                    constant.constant=-1;//修改这个值来改变间距
                }
            }
        }
    }
}

如上,我们通过修改constant.constant的值来修改改变间距值。
请看下面的效果图

iOS 11下调整BarButtonItem与屏幕边缘之间的距离_第1张图片
401518236185_.pic_hd.jpg

代码不足的地方 ,还请多多指教。

你可能感兴趣的:(iOS 11下调整BarButtonItem与屏幕边缘之间的距离)