編輯:關於Android編程
前言
大家或許在iOS程序開發中經常遇到屏幕旋轉問題,比如說希望指定的頁面進行不同的屏幕旋轉,但由於系統提供的方法是導航控制器的全局方法,無法隨意的達到這種需求。一般的解決方案是繼承UINavrgationViewController,重寫該類的相關方法,這樣雖然也能解決問題,但是在重寫的過程中至少產生兩個多余的文件和不少的代碼,這顯然不是我們想要的。下面就使用一種較底層的方法解決這個問題。
基本原理
動態的改變UINavrgationViewController的全局方法,將我們自己重寫的supportedInterfaceOrientations、shouldAutorotate方法和導航控制器對象的方法進行替換即可。
准備工作
配置項目支持方向
代碼實現
將下面的方法寫在所有視圖控制器的父類的viewDidLoad方法中,即可完成屏幕旋轉方向的配置。
//獲取當前視圖控制器的旋轉支持方法 Method selfMtihod = class_getInstanceMethod([self class], @selector(shouldAutorotate)); //獲取當前導航控制器的旋轉支持方法 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,表示默認的屏幕旋轉相關屬性。
在之後的每個該試圖控制器的子類中,可重寫supportedInterfaceOrientations、shouldAutorotate方法,即可完成指定視圖控制器方向的需求。
以上所述是小編給大家介紹的Runtime解決屏幕旋轉問題的方法詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的,在此也非常感謝大家對本站網站的支持!
ListView是android中最常用的控件之一。 在實際運用中往往會遇到一次性加載全部數據過多,需要分頁加載增加程序運行效率! 本demo是將更新的監聽放在listv
GLSurfaceView提供了下列特性:1> 管理一個surface,這個surface就是一塊特殊的內存,能直接排版到android的視圖view上。2>
以前看了很多人介紹的Android事件派發流程,但最近使用那些來寫代碼的時候出現了不少錯誤。所以回顧一下整個流程,簡單介紹從手觸摸屏幕開始到事件在View樹派發。從源碼上
hello,大家好,本文主要介紹如何開始開發一個美觀、有情調、人見人愛的Android應用程序,已知我們在市面上有不少布局極其精美,在視覺上讓人愛不釋手的應用程序,如果讓