直接修改导航条的返回按钮为leftBarButtonItem会使系统的右滑返回手势失效,因此不能这么做
看看下面是怎么做的
// 设置Nav的背景色和title色
UINavigationBar *navAppearance = self.navigationBar;
NSDictionary *textAttributes = nil;
if (kIsIOS7OrLater) {
[navAppearance setTintColor:kAssistOrangeColor];//返回按钮的箭头颜色
textAttributes = @{
NSFontAttributeName: kFontWithSize(17),
NSForegroundColorAttributeName: kBColor,
};
[self.navigationBar setBarTintColor:kWColor];
UIImage *image = [UIImage imageNamed:@"back"];
UIImage *backButtonImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
// 将返回按钮的文字position设置不在屏幕上显示
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(NSIntegerMin, NSIntegerMin) forBarMetrics:UIBarMetricsDefault];
self.interactivePopGestureRecognizer.enabled = YES;
} else {
if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0
textAttributes = @{
UITextAttributeFont: kFontWithSize(17),
UITextAttributeTextColor: kBColor,
UITextAttributeTextShadowColor: [UIColor clearColor],
UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetZero],
};
UIBarButtonItem *item = [[UIBarButtonItem alloc] init];
UIImage* image = [UIImage imageNamed:@"back"];
[item setBackButtonBackgroundImage:[image resizableImageWithCapInsets:UIEdgeInsetsMake(0, image.size.width, 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[item setBackButtonTitlePositionAdjustment:UIOffsetMake(NSIntegerMin, NSIntegerMin) forBarMetrics:UIBarMetricsDefault];
self.navigationItem.backBarButtonItem = item;
endif
}
[navAppearance setBackgroundImage:[UIColor hdf_imageWithColor:kWColor]
forBarMetrics:UIBarMetricsDefault];
[navAppearance setTitleTextAttributes:textAttributes];
self.navigationBar.shadowImage = kImageWithName(@”navline”);