RuntimePlayer-滑動(dòng)隱藏UINavigationBar的坑

以后每用Runtime解決一個(gè)問(wèn)題,就會(huì)記錄在這個(gè)文集里频敛。

我將以真實(shí)的使用場(chǎng)景為大家講述Runtime的各種用法霸褒,讓Runtime真正的投入到生產(chǎn)中。

合輯demo Github地址

問(wèn)題描述

見(jiàn)過(guò)幾種滑動(dòng)隱藏UINavigationBar的方案芒粹,不管是KVO還是Runtime兄纺,最終的落點(diǎn)都是去改bar這個(gè)View。這個(gè)看起來(lái)簡(jiǎn)單的需求化漆,真正做過(guò)的估計(jì)都知道估脆,實(shí)際上還是有些坑的。

具體情況就是錯(cuò)位座云,莫名其妙的錯(cuò)位疙赠,總是在不經(jīng)意間錯(cuò)位付材。由于具體的實(shí)現(xiàn)不同,錯(cuò)位的元素也不一樣圃阳,有的是scrollView錯(cuò)位厌衔,有的是statusBar錯(cuò)位,琳瑯滿(mǎn)目捍岳,各有千秋富寿。效果如下


大概是這么個(gè)樣子

原因無(wú)外乎就是NavigationBar的frame被系統(tǒng)強(qiáng)制恢復(fù)到了初始位置,而相關(guān)元素沒(méi)有正確響應(yīng)這個(gè)事件祟同。

我粗略的算了下作喘,大概有這么幾種情況會(huì)觸發(fā)錯(cuò)位:NavigationBar初始化、modal&pop&push晕城、app進(jìn)入前臺(tái)泞坦、開(kāi)啟熱點(diǎn)或接到電話(huà)等。

也就是說(shuō)解決這個(gè)錯(cuò)位問(wèn)題的思路有兩種砖顷,第一種贰锁,在上訴場(chǎng)景做相應(yīng)的處理(比如手動(dòng)把NavigationBar歸位,貼吧的方案)。第二種滤蝠,找到NavigationBar歸位的原因豌熄,在這個(gè)地方直接處理。

本文要介紹第二種物咳。

解決思路

通過(guò)給NavigationBar的setCenter:下斷點(diǎn)锣险,可以找到這么一個(gè)方法

-[UINavigationController _updateBarsForCurrentInterfaceOrientation]

這個(gè)方法會(huì)在所有NavigationBar可能需要更新的地方被調(diào)用。

知道了這個(gè)方法览闰,問(wèn)題就簡(jiǎn)化了很多芯肤,直接鉤這個(gè)方法,根據(jù)上下文來(lái)做相應(yīng)的處理压鉴。具體的處理代碼崖咨,一般和頁(yè)面布局以及實(shí)現(xiàn)有關(guān),這里就不上代碼了油吭。

end

這種方式的優(yōu)點(diǎn)是可以把判斷邏輯集中击蹲,更加可靠,不會(huì)漏掉某種情況婉宰。缺點(diǎn)也有歌豺,這是個(gè)私有API,有的人不敢用心包。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末世曾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轮听,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岭佳,死亡現(xiàn)場(chǎng)離奇詭異血巍,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)珊随,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)述寡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人叶洞,你說(shuō)我怎么就攤上這事鲫凶。” “怎么了衩辟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵螟炫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我艺晴,道長(zhǎng)昼钻,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任封寞,我火速辦了婚禮然评,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狈究。我一直安慰自己碗淌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布抖锥。 她就那樣靜靜地躺著亿眠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宁改。 梳的紋絲不亂的頭發(fā)上缕探,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音还蹲,去河邊找鬼爹耗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谜喊,可吹牛的內(nèi)容都是我干的潭兽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼斗遏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼山卦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起诵次,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤账蓉,失蹤者是張志新(化名)和其女友劉穎枚碗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體铸本,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肮雨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了箱玷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怨规。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锡足,靈堂內(nèi)的尸體忽然破棺而出波丰,到底是詐尸還是另有隱情,我是刑警寧澤舶得,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布掰烟,位于F島的核電站,受9級(jí)特大地震影響扩灯,放射性物質(zhì)發(fā)生泄漏媚赖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一珠插、第九天 我趴在偏房一處隱蔽的房頂上張望惧磺。 院中可真熱鬧,春花似錦捻撑、人聲如沸磨隘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)番捂。三九已至,卻和暖如春江解,著一層夾襖步出監(jiān)牢的瞬間设预,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工犁河, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鳖枕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓桨螺,卻偏偏與公主長(zhǎng)得像宾符,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子灭翔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,071評(píng)論 25 707
  • 面試題參考1 : 面試題[http://www.cocoachina.com/ios/20150803/12872...
    江河_ios閱讀 1,735評(píng)論 0 4
  • 上周日晚21:00點(diǎn)在貓群里準(zhǔn)點(diǎn)參加了海峰老師的成長(zhǎng)心法分享課程魏烫。 課程開(kāi)始前被海峰老師發(fā)在禁言群里的大紅包給嚇住...
    黃慧云yun閱讀 199評(píng)論 0 0
  • 近期目標(biāo):孩子專(zhuān)注力提升,上課不講話(huà),及時(shí)完成課堂及家庭作業(yè)哄褒,做事不磨蹭稀蟋,能有更多的時(shí)間做自己喜歡的事情! 孩子上...
    jessie娟子閱讀 124評(píng)論 0 0
  • 起床:4:30 活動(dòng): 1呐赡、悅動(dòng)50分:慢跑8.38公里+拉伸糊治; 2、悅讀50分: You can do it罚舱!
    云水禪心R閱讀 158評(píng)論 0 3