詳解Android中Runtime解決屏幕旋轉(zhuǎn)問(wèn)題(推薦)
前言
大家或許在iOS程序開(kāi)發(fā)中經(jīng)常遇到屏幕旋轉(zhuǎn)問(wèn)題,比如說(shuō)希望指定的頁(yè)面進(jìn)行不同的屏幕旋轉(zhuǎn),但由于系統(tǒng)提供的方法是導(dǎo)航控制器的全局方法,無(wú)法隨意的達(dá)到這種需求。一般的解決方案是繼承UINavrgationViewController,重寫該類的相關(guān)方法,這樣雖然也能解決問(wèn)題,但是在重寫的過(guò)程中至少產(chǎn)生兩個(gè)多余的文件和不少的代碼,這顯然不是我們想要的。下面就使用一種較底層的方法解決這個(gè)問(wèn)題。
基本原理
動(dòng)態(tài)的改變UINavrgationViewController的全局方法,將我們自己重寫的supportedInterfaceOrientations、shouldAutorotate方法和導(dǎo)航控制器對(duì)象的方法進(jìn)行替換即可。
準(zhǔn)備工作
配置項(xiàng)目支持方向
代碼實(shí)現(xiàn)
將下面的方法寫在所有視圖控制器的父類的viewDidLoad方法中,即可完成屏幕旋轉(zhuǎn)方向的配置。
//獲取當(dāng)前視圖控制器的旋轉(zhuǎn)支持方法 Method selfMtihod = class_getInstanceMethod([self class], @selector(shouldAutorotate)); //獲取當(dāng)前導(dǎo)航控制器的旋轉(zhuǎn)支持方法 Method navr = class_getInstanceMethod([self.navigationController class], @selector(shouldAutorotate)); //交換方法 method_exchangeImplementations(selfMtihod, navr); //以下同理 Method selfOrientation = class_getInstanceMethod([self class], @selector(supportedInterfaceOrientations)); Method navrOrientation = class_getInstanceMethod([self.navigationController class], @selector(supportedInterfaceOrientations)); method_exchangeImplementations(selfOrientation, navrOrientation);
使用方法
在上面的父類中重寫supportedInterfaceOrientations、shouldAutorotate,表示默認(rèn)的屏幕旋轉(zhuǎn)相關(guān)屬性。
在之后的每個(gè)該試圖控制器的子類中,可重寫supportedInterfaceOrientations、shouldAutorotate方法,即可完成指定視圖控制器方向的需求。
以上所述是小編給大家介紹的Runtime解決屏幕旋轉(zhuǎn)問(wèn)題的方法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的,在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android Listview中顯示不同的視圖布局詳解及實(shí)例代碼
這篇文章主要介紹了Android Listview中顯示不同的視圖布局詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02Android類加載ClassLoader雙親委托機(jī)制詳解
這篇文章主要為大家介紹了Android類加載ClassLoader雙親委托機(jī)制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07android ListView的右邊滾動(dòng)滑塊啟用方法 分享
android ListView的右邊滾動(dòng)滑塊啟用方法 分享,需要的朋友可以參考一下2013-05-05Android 軟鍵盤狀態(tài)并隱藏輸入法的實(shí)例
這篇文章主要介紹了Android 軟鍵盤狀態(tài)并隱藏輸入法的實(shí)例的相關(guān)資料,這里提供實(shí)例實(shí)現(xiàn)軟鍵盤切換并隱藏輸入法的鍵盤,需要的朋友可以參考下2017-09-09Android開(kāi)發(fā)之底圖局部加載移動(dòng)的方法示例
這篇文章主要介紹了Android開(kāi)發(fā)之底圖局部加載移動(dòng)的方法,涉及Android針對(duì)圖片與屏幕屬性的讀取、計(jì)算、設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08Android實(shí)現(xiàn)雅虎新聞?wù)虞d視差動(dòng)畫效果
這篇文章主要介紹了Android實(shí)現(xiàn)雅虎新聞?wù)虞d視差動(dòng)畫效果,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Android TabLayout 實(shí)現(xiàn)底部Tab的示例代碼
本篇文章主要介紹了Android TabLayout 實(shí)現(xiàn)底部Tab的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Flutter listview如何實(shí)現(xiàn)下拉刷新上拉加載更多功能
這篇文章主要給大家介紹了關(guān)于Flutter listview如何實(shí)現(xiàn)下拉刷新上拉加載更多功能的相關(guān)資料,對(duì)于新聞列表數(shù)據(jù)的更新和加載更多是必不可少的,而實(shí)現(xiàn)下拉刷新與上劃加載更多的方式有很多種,需要的朋友可以參考下2021-08-08Android實(shí)現(xiàn)應(yīng)用程序的閃屏效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)應(yīng)用程序的閃屏效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07