美文网首页
iOS 11下调整BarButtonItem与屏幕边缘之间的距离

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

作者: ZYiDa | 来源:发表于2018-02-10 12:17 被阅读36次

    因为在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的值来修改改变间距值。
    请看下面的效果图

    401518236185_.pic_hd.jpg

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

    相关文章

      网友评论

          本文标题:iOS 11下调整BarButtonItem与屏幕边缘之间的距离

          本文链接:https://www.haomeiwen.com/subject/wtpctftx.html