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的:
多了一个在iOS9出现的那个盒子StackView
iOS10的:由于偏移50都超过屏幕了,
结论:
使用偏移本来是可以的,但是iOS11导航栏把item放进盒子里面,不管你偏移多少左边始终有大概20的距离,偏移方法失效
解决方案:
https://github.com/zhangkun0625/UINavigation-SXFixSpace