美文网首页iOS开发
完美解决iOS11 navigationItem不能偏移问题

完美解决iOS11 navigationItem不能偏移问题

作者: UnknowException | 来源:发表于2018-03-13 12:08 被阅读259次

    iOS11以下偏移方案:

    UIButton *settingBtn = [UIButton alloc]init]; 

    UIBarButtonItem *rightBar = [[UIBarButtonItem alloc]initWithCustomView:settingBtn]; 

    UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 

    negativeSpacer.width = -10; 

    self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,rightBar,nil];

    iOS11发现以上方法不能用了,iOS11请看分割线下面


    感谢 stackoverflow上的朋友提供的解决办法

    https://stackoverflow.com/questions/44677018/ios-11-uinavigationbar-bar-button-items-alignment/46660888#46660888

    首先自定义navigationBar,

    #import "LZJNavigationBar.h"

    @implementationLZJNavigationBar

    static CGFloat const mySpacer = -5;//item边距设置

    - (void)layoutSubviews {

        [super layoutSubviews];

        if(@available(iOS11, *)) {

            self.layoutMargins = UIEdgeInsetsZero;

        for(UIView*subviewinself.subviews) {

                if ([NSStringFromClass([subview class]) containsString:@"ContentView"]) {

                    UIEdgeInsets myEdge = subview.layoutMargins;

                    subview.layoutMargins=UIEdgeInsetsMake(0, myEdge.left+mySpacer,0, myEdge.right+mySpacer);

                }

            }

        }

    }

    @end

    使用方法

     CustomViewController *VC =[[CustomViewController alloc]init];

        UINavigationViewController *nav = [[UINavigationViewController alloc] initWithNavigationBarClass:[LZJNavigationBar class] toolbarClass:nil];

        [nav setViewControllers:@[VC] animated:NO];

    然后再使用最iOS11以下的偏移方法,生效!

    完美解决

    相关文章

      网友评论

      • iOS白水:其实并不完美。 会影响到 接入第三方的界面库 leftbar按钮。

      本文标题:完美解决iOS11 navigationItem不能偏移问题

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