iOS 11 后如何自定义返回按钮

iOS 11后自定义返回按钮会偏右,使用UIBarButtonSystemItemFixedSpace已经无效,这是由于iOS 11后使用约束布局导致。

解决办法:自定义 UINavigationBar例如ZHNavigationBar

#import 

@interface ZHNavigationBar : UINavigationBar

@end
#import "ZHNavigationBar.h"

@implementation ZHNavigationBar

-(void)layoutSubviews
{
    [super layoutSubviews];
    CGFloat systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
    if (systemVersion >=11) {
        for (UIView *subview in self.subviews) {
            if ([NSStringFromClass([subview class]) containsString:@"ContentView"]) {
                subview.layoutMargins = UIEdgeInsetsMake(subview.layoutMargins.top, 0, subview.layoutMargins.bottom, subview.layoutMargins.right);
            }
        }
    }
    
}

如果是使用storyboard则使navigationBarClassZHNavigationBar,如下图所示:

iOS 11 后如何自定义返回按钮_第1张图片
屏幕快照 2017-10-16 18.23.57.png

如果使用代码,则在初始化时使用:

UINavigationController *nav = [[UINavigationController alloc]initWithNavigationBarClass:

你可能感兴趣的:(iOS 11 后如何自定义返回按钮)