iOS11设置返回按钮

iOS自带的返回按钮有些坑,总是到达不到左边,领导点了以后就一直bb,然后照着网上的代码搞,添加一个空的item把宽度设为-10,代码如下

 [backButton addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside];
        
        UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFixedSpace target:nil action:nil];
        negativeSpacer.width = -50;  //我都偏移50了,还是不行
        viewController.navigationItem.leftBarButtonItems = @[ negativeSpacer, [[UIBarButtonItem alloc] initWithCustomView:backButton]  ];

记得以前是好使的最近一直有问题,后来对比发现iOS11的导航栏结构改了,

iOS11的:


BEE05BB4-6F2B-4BB9-A0F8-8166C028BBE8.png

多了一个在iOS9出现的那个盒子StackView

iOS10的:由于偏移50都超过屏幕了,


110F84DD-405F-4109-8961-60078759A6CF.png

结论:
使用偏移本来是可以的,但是iOS11导航栏把item放进盒子里面,不管你偏移多少左边始终有大概20的距离,偏移方法失效
解决方案:
https://github.com/zhangkun0625/UINavigation-SXFixSpace

你可能感兴趣的:(iOS11设置返回按钮)