iOS 11 使用兩種方法替換(Method Swizzling)去掉導(dǎo)航欄返回按鈕的文字
方法一:設(shè)置BarButtonItem的文本樣式為透明顏色,代碼如下:
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateHighlighted];
此外這種方法會(huì)導(dǎo)致title不能居中,被偏移很多,如下所示(雖然不被顯示,也占了導(dǎo)航欄左邊很大一部分位置)

方法二:給UIViewController添加類別,然后在load方法里面用Method Swzilling方法替換 交換ViewDidAppear,部分代碼如下
+(void)load {
swizzleMethod([self class], @selector(viewDidAppear:), @selector(ac_viewDidAppear));
}
- (void)ac_viewDidAppear{
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@""
style:UIBarButtonItemStylePlain
target:self
action:nil];
[self ac_viewDidAppear];
}
void swizzleMethod(Class class, SEL originalSelector, SEL swizzledSelector)
{
// the method might not exist in the class, but in its superclass
Method originalMethod = class_getInstanceMethod(class, originalSelector);
Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
// class_addMethod will fail if original method already exists
BOOL didAddMethod = class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));
// the method doesn't exist and we just added one
if (didAddMethod) {
class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
}
else {
method_exchangeImplementations(originalMethod, swizzledMethod);
}
}
注意事項(xiàng):
要給整個(gè)backButtonItem賦值才可以,👇這種方法不行,因?yàn)閎ackBarButtonItem默認(rèn)為空,給nil方法消息,默認(rèn)聲明都不執(zhí)行(參考官網(wǎng))
self.navigationItem.backBarButtonItem.title = @" ";
leftBarButtonItem 與backBarButtonItem 的顯示關(guān)系:
有l(wèi)eftBarButtonItem則優(yōu)先顯示當(dāng)前VC的leftBarButtonItem,無(wú)則顯示上個(gè)VC的backBarButtonItem,再無(wú)則顯示上個(gè)VC的title(參考官網(wǎng) 還是官網(wǎng)解釋的清楚)

總結(jié)
以上所述是小編給大家介紹的iOS 11 使用兩種方法替換(Method Swizzling)去掉導(dǎo)航欄返回按鈕的文字,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
iOS使用WebView生成長(zhǎng)截圖的第3種解決方案
這篇文章主要給大家介紹了關(guān)于iOS使用WebView生成長(zhǎng)截圖的第3種解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09
iOS進(jìn)階之xib上控件自動(dòng)生成純代碼
本篇內(nèi)容是一篇關(guān)于IOS開發(fā)進(jìn)階的內(nèi)容,學(xué)習(xí)xib上控件自動(dòng)生成純代碼這個(gè)功能,有興趣的朋友參考下。2018-02-02
IOS應(yīng)用程序多語(yǔ)言本地化的兩種解決方案
本篇文章介紹了IOS應(yīng)用程序多語(yǔ)言本地化解決方案,這里整理了詳細(xì)的解決辦法,有需要的小伙伴可以參考下。2016-11-11
IOS 開發(fā)之 NSMutableArray與NSArray 的區(qū)別
這篇文章主要介紹了IOS 開發(fā)之 NSMutableArray與NSArray 的區(qū)別的相關(guān)資料,希望通過(guò)本文能掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09
iOS 讀取URL圖片并存儲(chǔ)到本地的實(shí)例
下面小編就為大家?guī)?lái)一篇iOS 讀取URL圖片并存儲(chǔ)到本地的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
iOS仿微信搖一搖動(dòng)畫效果加震動(dòng)音效實(shí)例
這篇文章主要介紹了iOS仿微信搖一搖動(dòng)畫效果加震動(dòng)音效實(shí)例,詳細(xì)介紹了微信搖一搖功能的實(shí)現(xiàn)原理,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-03-03
iOS NSURLSessionDownloadTask實(shí)現(xiàn)文件斷點(diǎn)下載的方法
本篇文章主要介紹了iOS NSURLSessionDownloadTask實(shí)現(xiàn)文件斷點(diǎn)下載的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
IOS開發(fā)之路--C語(yǔ)言基礎(chǔ)知識(shí)
當(dāng)前移動(dòng)開發(fā)的趨勢(shì)已經(jīng)勢(shì)不可擋,這個(gè)系列希望淺談一下個(gè)人對(duì)IOS開發(fā)的一些見解,今天我們從最基礎(chǔ)的C語(yǔ)言開始,C語(yǔ)言部分我將分成幾個(gè)章節(jié)去說(shuō),今天我們簡(jiǎn)單看一下C的一些基礎(chǔ)知識(shí),更高級(jí)的內(nèi)容我將放到后面的文章中。2014-08-08

