iOS11修復(fù)導(dǎo)航欄按鈕位置偏移問題

iOS11后,系統(tǒng)更改了UINavigationBar的布局結(jié)構(gòu),所以會導(dǎo)致自定義導(dǎo)航按鈕的位置會便的很離譜?,F(xiàn)在推薦一個(gè)簡單方法:
有兩種方法:
1、如果是全局通用,則使用擴(kuò)展,

@implementation UINavigationBar (BDFixSpace)

+(void)load {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        Method originalMethodImp = class_getInstanceMethod(self, @selector(layoutSubviews));
        Method destMethodImp = class_getInstanceMethod(self, @selector(bd_layoutSubviews));
        method_exchangeImplementations(originalMethodImp, destMethodImp);
    });
}

-(void)bd_layoutSubviews{
    
    [self bd_layoutSubviews];
    for (UIView *subview in self.subviews) {
        if ([NSStringFromClass([subview class]) containsString:@"_UINavigationBarContentView"]) {
            UIEdgeInsets margins = subview.layoutMargins;
            if(CURRENT_VERSION >= 11.0){
                subview.frame = CGRectMake(-margins.left*0.5, -margins.top, margins.left*0.5 + margins.right*0.5 + subview.frame.size.width, margins.top + margins.bottom + subview.frame.size.height);
            }else{
                margins = UIEdgeInsetsZero;
            }
            break;
        }
    }
}

2、如果是自定義navigationbar,則重寫layoutsubview方法即可

-(void)layoutSubviews{
    
    [self layoutSubviews];
    for (UIView *subview in self.subviews) {
        if ([NSStringFromClass([subview class]) containsString:@"_UINavigationBarContentView"]) {
            UIEdgeInsets margins = subview.layoutMargins;
            if(CURRENT_VERSION >= 11.0){
                subview.frame = CGRectMake(-margins.left*0.5, -margins.top, margins.left*0.5 + margins.right*0.5 + subview.frame.size.width, margins.top + margins.bottom + subview.frame.size.height);
            }else{
                margins = UIEdgeInsetsZero;
            }
            break;
        }
    }
}

是不是很簡單!
謝謝,如果幫到你還請點(diǎn)個(gè)贊哈!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容