iOS 11之后 导航栏返回按钮位置问题
2020-02-20 本文已影响0人
FlowYourHeart
很久没有关注过这个问题了,最近有一个oc的老项目需要调整,所以简单记录一下
也是对之前的一篇关于导航栏的记录小白告白😄的更新补充
直奔主题
创建一个NavigationBar的category 利用runtime在layoutSubviews的时候把layoutMargins的偏移设置为0就好了,
下面代码直接复制到项目就OK
#import "UINavigationBar+DZGFixSpace.h"
#import <objc/runtime.h>
@implementation UINavigationBar (DZGFixSpace)
+(void)load {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Method originalMethodImp = class_getInstanceMethod(self, @selector(layoutSubviews));
Method destMethodImp = class_getInstanceMethod(self, @selector(dzg_layoutSubviews));
method_exchangeImplementations(originalMethodImp, destMethodImp);
});
}
-(void)dzg_layoutSubviews{
[self dzg_layoutSubviews];
if ([UIDevice currentDevice].systemVersion.floatValue >= 11) {
self.layoutMargins = UIEdgeInsetsZero;
for (UIView *subview in self.subviews) {
if ([NSStringFromClass(subview.class) containsString:@"ContentView"]) {
subview.layoutMargins = UIEdgeInsetsZero;
}
}
}
}
@end