天天看点

IOS7适配之:返回按钮偏移问题

IOS7下用系统的UIBarButtonItem时返回按钮左边距比IOS6小,见下图:

IOS7适配之:返回按钮偏移问题

图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;
           

希望对大家有帮助~!~!