iOS后臺持續(xù)定位等藍(lán)條對視圖的影響

最近看到一個問題猛频,就是在有app后臺持續(xù)定位或是正在打電話亦或是個人正在連接你分享的熱點時馋吗,手機(jī)上方會有個提示的藍(lán)條(綠條或是紅條)缺猛,場景就是這樣拷沸,此時您打開某款app會發(fā)現(xiàn)自己的頁面視圖整體下移特別是一些app底部放視圖的情況此時很可能出現(xiàn)問題中姜,經(jīng)測試發(fā)現(xiàn)UITabbarContrller底部的tabbar不會受此影響消玄,QQ在遇到這種情況時會在有藍(lán)條和藍(lán)條消失時刷新頁面,有興趣的可以自行測試丢胚,刷新的效果還是很明顯的翩瓜,會看到底部視圖的抖動(我測試的頁面是聊天頁面的底部輸入視圖)
下圖可看出有沒有藍(lán)條對QQ底部視圖沒有影響,但是你會明顯感覺到QQ這個頁面的刷新效果(說明QQ考慮到了這種情況并做了相應(yīng)的處理)

IMG_2906.PNG
IMG_2905.PNG

咱們先看一下有問題的視圖和正常的視圖

IMG_2907.JPG
IMG_2908.JPG

這個就比較明顯了嗜桌,出現(xiàn)藍(lán)條時奥溺,明顯底部視圖超出了手機(jī)屏幕,不是很友好的感覺骨宠,這是作為一個強(qiáng)迫癥所不能接受的浮定,怎么能遛出屏幕呢相满,今天終于有時間解決一下這個問題。

屏幕快照 2017-08-26 下午11.53.23.png

上圖很清晰的解釋了這個問題桦卒,導(dǎo)航控制器中立美,iphone6在- (void)viewDidLoad中獲取的self.view的height為667,- (void)viewDidAppear:(BOOL)animated中獲取的height為603方灾,在有藍(lán)條時這個height變?yōu)榱?83建蹄,有興趣的可以試一下,至此問題找到了裕偿。

解決思路

1洞慎、看一下有沒有什么方法可以檢測這個藍(lán)條的出現(xiàn)和消失,可以度娘上沒有這個嘿棘,自己也沒有這方面的開發(fā)經(jīng)驗劲腿,這種方法也就作罷了;
2鸟妙、使用KVO鍵值觀察者焦人,既然self.view的height會改變,咱們就檢測self.view的frame的改變重父,果然問題完美解決花椭,下面是過程

  • (void)viewDidLoad中
[self.view addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew || NSKeyValueChangeOldKey context:nil];

實現(xiàn)frame變化時的回調(diào)方法

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{

    if ([keyPath isEqualToString:@"frame"]) {
        
        NSValue *value = change[@"new"];
        
        CGRect frame = [value CGRectValue];
        
        self.backTextField.frame = CGRectMake(0, CGRectGetHeight(frame)-44, CGRectGetWidth(frame), 44);
        
    }
    
}

在做這個地方時遇到一個小問題,回調(diào)方法中(NSDictionary<NSKeyValueChangeKey,id> *)change有兩個key

{
    kind = 1;
    new = "NSRect: {{0, 64}, {375, 603}}";
}

咱們需要的就是這個new的value值房午,乍一看這不是NSString類型嗎直接使用CGRectFromNsstring()可得到新的frame矿辽,經(jīng)測試,崩潰了歪沃,對就是崩潰了嗦锐,一查才知道這個new對應(yīng)的value是一個NSConcreteValue類型,這個東西若是基礎(chǔ)類型就是NSNumber沪曙,結(jié)構(gòu)體就是NSValue,改為NSValue萎羔,就完美的解決了問題液走,看效果:

IMG_2902.PNG
IMG_2901.PNG

有無藍(lán)條底部視圖展示位置不變。
Demo地址https://github.com/wenchang1989/CWCBlueLineBottomView

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贾陷,一起剝皮案震驚了整個濱河市缘眶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌髓废,老刑警劉巖巷懈,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異慌洪,居然都是意外死亡顶燕,警方通過查閱死者的電腦和手機(jī)凑保,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涌攻,“玉大人欧引,你說我怎么就攤上這事】一眩” “怎么了芝此?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長因痛。 經(jīng)常有香客問我婚苹,道長,這世上最難降的妖魔是什么鸵膏? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任膊升,我火速辦了婚禮,結(jié)果婚禮上较性,老公的妹妹穿的比我還像新娘用僧。我一直安慰自己,他們只是感情好赞咙,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布责循。 她就那樣靜靜地躺著,像睡著了一般攀操。 火紅的嫁衣襯著肌膚如雪院仿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天速和,我揣著相機(jī)與錄音歹垫,去河邊找鬼。 笑死颠放,一個胖子當(dāng)著我的面吹牛排惨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碰凶,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼暮芭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了欲低?” 一聲冷哼從身側(cè)響起辕宏,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砾莱,沒想到半個月后瑞筐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡腊瑟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年聚假,在試婚紗的時候發(fā)現(xiàn)自己被綠了块蚌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡魔策,死狀恐怖匈子,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闯袒,我是刑警寧澤虎敦,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站政敢,受9級特大地震影響其徙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喷户,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一唾那、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧褪尝,春花似錦闹获、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至璃谨,卻和暖如春沙庐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背佳吞。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工拱雏, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人底扳。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓铸抑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親衷模。 傳聞我的和親對象是個殘疾皇子羡滑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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