iPhone iOS開啟個人熱點的相關位置調整小結

2021-07-09 03:05:43 字數 1274 閱讀 9564

冬至已到,聖誕將近,最近公司專案實在太多,三四個專案反覆的切換真的讓人焦頭爛額,趁今天有點空,把維護的三個專案順利送出,剛好可以縷縷思路,記錄一下最近遇到的問題。說不著急那是假的,客戶一天天的催的確實令人心煩意亂,但是回過頭來想想也確實不易,所以還是說服自己認真對待他們反饋的乙個個問題,盡量做到讓他們滿意也讓自己滿意。有句話怎麼說來,終於完成了,還好我沒放棄。哈哈,閒言不多講,說一下最近遇到解決的乙個問題吧,由熱點引起狀態列位置變化而導致自定義底部欄位置錯位的問題。

關於熱點的帖子網上確實不少,也給了很多的解決的方案。iphone作為個人熱點且有連線時,系統狀態列下面會多一行熱點連線提示欄"personal hotspot: * connection",縱向會下壓20pt;當所有連線都斷開時,熱點欄消失,縱向高度恢復正常。

// ios系統版本

#define system_version    [[[uidevice currentdevice] systemversion] doublevalue]

// 標準系統狀態列高度

也即當有熱點欄時,uiviewcontroller.view.bounds.height都自動扣除了熱點欄的高度,ios<7.0不包含標準系統狀態列,ios≥7.0包含標準系統狀態列。

由於ios7把整個螢幕高度(包括狀態列,不包括熱點欄)都作為了檢視控制器的有效高度,因此從ios6公升級到ios7時,會出現檢視整體上移了乙個狀態列的高度(20pt),並和上層的狀態列交疊在一起。

上面的這兩段是借用的他們總結的一些說明性的東西,分析的還很詳細,原理還是要懂得,以後遇到問題一定要學會總結,不然的話太容易遺忘。網上給了一些解決的思路,我參考了比較好的兩篇部落格,他們給的思路還是挺好的,但是還需要加一些處理和判斷,下面我說一下解決問題的完整過程吧。正常來說熱點引起的狀態列位置的調整有兩種情況,乙個是當前頁面已經建立開啟,另乙個情況是頁面尚未建立,下面來專門區分一下。

1、狀態列變化通知的處理和新增

else

} 經過反覆的測試發現,原來通知只會在頁面已經建立開啟這種情況下走,所以需要註冊監聽狀態列的通知,並作處理

#pragma mark-狀態列錄音或通話狀態通知

-(void)layoutcontrollersubviews:(nsnotification *)notification

else

} - (void)statusbarframewillchange:(nsnotification*)notification

else

}另一種情況就是頁面尚未開啟前,熱點已經連線,這樣的話開啟頁面是不會走通知的地方,需要在

iPhone iOS開啟個人熱點的垂直適配問題詳解

iphone開啟個人熱點後 狀態列會向下彈出多餘的20個畫素點,這是系統會呼叫vc 的 void viewwilllayoutsubviews 函式,對vc的調整可放在這裡面 view即將布局其subviews。比如view的bounds改變了 例如狀態列從不顯示到顯示,檢視方向變化 要調整subv...

windows DOS開啟wifi熱點

人生在世,總有有時候是在沒有任何wifi軟體去開啟wifi的環境下,這時,windows dos開啟wifi熱點成了唯一的選擇。其實這個也非常簡單的。利用 建立無線wifi 熱點開啟執行輸入cmd,輸入以下 netsh wlan set hostednetwork mode allow ssid c...

Android熱點的開啟和關閉

今天測試了3臺手機,分別是華為p9 1 3 小公尺note3,都要使用者在應用管理介面設定 允許 修改系統設定 許可權 write settings是特殊許可權,無法動態申請 的前提下,才能開啟熱點,否則報沒有授權write settings的異常。三颱測試機的測試結果是,p9和1 手機能分享熱點並...