IOS7下用系统的UIBarButtonItem时返回按钮左边距比IOS6小,见下图:
图1:上面是IOS6,下面是IOS7
需求:
IOS6和IOS7的返回按钮要统一成IOS7样式的,即偏移量要像下面那个图那么宽,那IOS6怎么办呢?
解决方案:
#define IOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
+ (UIBarButtonItem *)backItem
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:STR_button_backItem]
forState:UIControlStateNormal];
button.backgroundColor = [UIColor clearColor];
CGFloat offset = 8;
if (IOS7) {
offset = 0;
}
button.frame = CGRectMake(offset, 0, kBackButtonWidth, kBackButtonHeight);
UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kBackButtonWidth+offset, kBackButtonHeight)];
button.tag = 147;
[aView addSubview:button];
aView.userInteractionEnabled = YES;
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:aView];
return backItem;
}
- (void)setTarget:(id)target action:(SEL)action
{
UIButton *buttom = (UIButton *)[(self.customView) viewWithTag:147];
[buttom addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
}
//设置导航栏返回按钮
UIBarButtonItem *backButton = [UIBarButtonItem backItem];
[backButton setTarget:self action:@selector(backButtonItemClick)];
self.navigationItem.leftBarButtonItem = backButton;
希望对大家有帮助~!~!