iOS11之前小伙伴通過設置UIBarButtonSystemItemFixedSpace width=-10來解決按鈕位置偏移問題, UIButtonleftBtn = [[UIButtonalloc] initWithFrame:CGRectMake(0,0, 44,44)];?
leftBtn.backgroundColor = [UIColorcyanColor]; [leftBtn setImage:[UIImageimageNamed:@"back.png"]forState:UIControlStateNormal];?
[leftBtn addTarget:selfaction:@selector(back:)forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItemleftItem = [[UIBarButtonItemalloc] initWithCustomView:leftBtn];
UIBarButtonItem *ItemSpace = [[UIBarButtonItemalloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
????????????if????????(MODEL_VERSION >=7.0) {? ?
????????????????ItemSpace.width= -10;
????????????????????????}
????????????????????self.navigationItem.leftBarButtonItems=@[ItemSpace, leftItem];
如今iOS11上不可用了尷尬!!!
后來通過改變按鈕的 contentEdgeInsets和imageEdgeInsets的值成功改變了按鈕的偏移問題,單獨設置contentEdgeInsets也可達到一定的效果。
?UIButtonleftBtn = [[UIButtonalloc] initWithFrame:CGRectMake(0,0, 44,44)]; leftBtn.backgroundColor = [UIColorcyanColor];?
leftBtn.contentEdgeInsets =UIEdgeInsetsMake(0, -20,0, 0);?
leftBtn.imageEdgeInsets =UIEdgeInsetsMake(0, -15,0, 0);?
[leftBtn setImage:[UIImageimageNamed:@"back"]forState:UIControlStateNormal];?
[leftBtn? addTarget:selfaction:@selector(back:)forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItemleftItem = [[UIBarButtonItemalloc] initWithCustomView:leftBtn];
self.navigationItem.leftBarButtonItems=@[leftItem];