iOS 11之前 ,导航栏偏移量是正常显示的 ,不需要修改什么, 如下:
UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom];
leftButton.frame = CGRectMake(0, 0, 27, 27);
[leftButton setImage:[UIImage imageNamed:@"back1.png"] forState:UIControlStateNormal];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:leftButton];
[leftButton addTarget:self action:@selector(backButton) forControlEvents:UIControlEventTouchUpInside];
但iOS 11 之后显示偏移严重 ,简单粗暴的方法就是 改变按钮的 contentEdgeInsets和imageEdgeInsets的值成功改变了按钮的偏移问题
UIButton *leftBtn = [[UIButton alloc] initWithFrame:CGRectMake(0,0, 44,44)];
leftBtn.contentEdgeInsets =UIEdgeInsetsMake(0, -30,0, 0);
leftBtn.imageEdgeInsets =UIEdgeInsetsMake(0, -25,0, 0);
[leftBtn setImage:[UIImage imageNamed:@"back1.png"]forState:UIControlStateNormal];
[leftBtn addTarget:self action:@selector(backButton)forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:leftBtn];
self.navigationItem.leftBarButtonItems =@[leftItem];