iOS 11
后自定义返回按钮会偏右,使用UIBarButtonSystemItemFixedSpace
已经无效,这是由于iOS 11
后使用约束布局导致。
解决办法:自定义
UINavigationBar
例如ZHNavigationBar
#import <UIKit/UIKit.h>
@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
则使navigationBar
的Class
为ZHNavigationBar
,如下图所示:

如果使用代码,则在初始化时使用:
UINavigationController *nav = [[UINavigationController alloc]initWithNavigationBarClass:
网友评论