iOS 11 UINavigationItem 去除左右间隙的方法

来源:爱站网时间:2020-06-05编辑:网友分享
相信很多人都知道,调整导航条两侧按钮之间的距离给barbuttonem数组添加项,下面就随着爱站技术频道一起仔细的看看iOS 11 UINavigationItem 去除左右间隙的方法吧,一定会给你带来启发的。

相信很多人都知道,调整导航条两侧按钮之间的距离给barbuttonem数组添加项,下面就随着爱站技术频道一起仔细的看看iOS 11 UINavigationItem 去除左右间隙的方法吧,一定会给你带来启发的。

修改思路

在iOS11之前保持原有方式进行设置,iOS11之后进行额外的边距约束修改达到移动效果.

从viewDebug的界面上观察可以看到需要将UIButtonBarStackView距离左边和右边的16的约束改为0即可.

核心代码

配置导航器view代码

//0:leftBarButtonItems,1:rightBarButtonItems
- (void)initBarItem:(UIView*)view withType:(int)type{
  UIBarButtonItem * buttonItem = [[UIBarButtonItem alloc]initWithCustomView:view];
  //解决按钮不靠左 靠右的问题.iOS 11系统需要单独处理
  UIBarButtonItem * spaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
  spaceItem.width = -16;//这个值可以根据自己需要自己调整
  switch (type) {
    case 0:
      if (!IS_IOS_VERSION_11) {
        self.navigationItem.leftBarButtonItems =@[spaceItem,buttonItem];
      }else{
        self.navigationItem.leftBarButtonItems =@[buttonItem];
      }
      break;
    case 1:
      if (!IS_IOS_VERSION_11) {
        self.navigationItem.rightBarButtonItems =@[spaceItem,buttonItem];
      }else{
        self.navigationItem.rightBarButtonItems =@[buttonItem];
      }
      break;
      
    default:
      break;
  }
}

处理iOS11情况下的偏移问题,将边距为16的约束的值改为0.

-(void)viewDidLayoutSubviews{
  if (!IS_IOS_VERSION_11) return;
  UINavigationItem * item=self.navigationItem;
  NSArray * array=item.leftBarButtonItems;
  if (array&&array.count!=0){
    //这里需要注意,你设置的第一个leftBarButtonItem的customeView不能是空的,也就是不要设置UIBarButtonSystemItemFixedSpace这种风格的item
    UIBarButtonItem * buttonItem=array[0];
    UIView * view =[[[buttonItem.customView superview] superview] superview];
    NSArray * arrayConstraint=view.constraints;
    for (NSLayoutConstraint * constant in arrayConstraint) {
      if (fabs(constant.constant)==16) {
        constant.constant=0;
      }
    }
  }
}

改后效果.png

iOS 11 UINavigationItem 去除左右间隙的方法,大家都了解了吗?其实对于这个问题,大家都全面的掌握住了吧,还有什么想要了解的话,就继续关注js.aizhan.com。

上一篇:iOS UIAlertController中UITextField添加晃动效果与边框颜色详解

下一篇:解决iOS11刷新tableview会出现漂移的现象

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载