美文网首页
iOS11.0以后无法调整UINavigationBarItem

iOS11.0以后无法调整UINavigationBarItem

作者: 面糊 | 来源:发表于2017-12-28 19:23 被阅读41次
  • 在iOS11中, 发现以前修改barButton位置的方法不再奏效了, 通过查看UI层级结构发现, 从iOS11开始, barButton不再是直接加到navigationBar上面, 而是加在一层_UIButtonBarStackView
WX20171228-191415@2x.png
  • _UIButtonBarStackView是新添加上去的一个容器view, 我们可以通过遍历子控件的方式遍历出来这个控件, 但是无法直接获取, 因此不建议直接操作这个没有暴露出来的控件.

    WX20171228-191538@2x.png
  • 从图片UI层级结构上可以看出来, stackView的默认x值是16, 而我们将自定义的UIButton直接添加上去, 无法满足我们的button靠近屏幕边缘的要求.

  • 如果使用iOS11之前的方法, 使用一个系统的barButton来作为占位视图的话, 就会出现如下的效果.

    UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    self.navigationItem.leftBarButtonItems = @[spacer, leftItem];
    
WX20171228-191947@2x.png
  • 从上图中可以发现, 当我们添加一个系统的barButton时, stackView的x向左侧移动了8pt, 因此我们可以利用这个特点, 将customButton向左侧移动, 从而达到修改navigationBarButton位置的需求

    button.contentEdgeInsets = UIEdgeInsetsMake(0, -8, 0, 8);
    
WX20171228-192326@2x.png

相关文章

网友评论

      本文标题:iOS11.0以后无法调整UINavigationBarItem

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