1. 程式人生 > >當rootViewController為tabbarController時,控制螢幕旋轉的方法

當rootViewController為tabbarController時,控制螢幕旋轉的方法

在ios6以後,ios系統改變了螢幕旋轉的方法,如果要設定螢幕旋轉的方法,需要在rootvc裡面進行編寫,例如

UIViewController *viewCtrl = [[UIViewController alloc] init];  
UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:viewCtrl];  
if ([window respondsToSelector:@selector(setRootViewController:)]) {  
    self
.window.rootViewController = navCtrl; } else { [self.window addSubview:navCtrl.view]; }

當root為nav時,你要建立一個nav的子類,進行修改,如果是vc時,直接可以在vc裡進行修改,網上已經有很多的例子了,但如果是tabbar裡面巢狀這很多nav和vc,nav裡又有vc我們要怎麼弄呢,下面是我調研的一些方法,就是用幾個category對nav和tabbarController進行類別的編寫,讓他們可以分別對應子檢視的旋轉方向 

UITabBarController+autoRotate 

@interface UITabBarController (autoRotate)

-(BOOL)shouldAutorotate;
- (NSUInteger)supportedInterfaceOrientations;

@end


#import "UITabBarController+autoRotate.h"

@implementation UITabBarController (autoRotate)

- (BOOL)shouldAutorotate {
return [self.selectedViewController shouldAutorotate];
}
- (NSUInteger
)supportedInterfaceOrientations { return [self.selectedViewController supportedInterfaceOrientations]; } @end

UINavigationController+autoRotate.h 
@interface UINavigationController (autoRotate)

-(BOOL)shouldAutorotate;
- (NSUInteger)supportedInterfaceOrientations;

@end

@implementation UINavigationController (autoRotate)

- (BOOL)shouldAutorotate {
return [self.visibleViewController shouldAutorotate];
}

- (NSUInteger)supportedInterfaceOrientations {
return [self.visibleViewController supportedInterfaceOrientations];
}

@end
UIViewController1.m

- (BOOL)shouldAutorotate {
 return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;;
}
UIViewController2.m

- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}

相關推薦

rootViewControllertabbarController,控制螢幕旋轉方法

在ios6以後,ios系統改變了螢幕旋轉的方法,如果要設定螢幕旋轉的方法,需要在rootvc裡面進行編寫,例如 UIViewController *viewCtrl = [[UIViewController alloc] init]; UINavigationCont

spring boot加mybatis使用Map返回屬性也會沒有(轉)

call pri per n-n spring fig setter 解決 strong 使用spring boot加mybatis時,設置Map返回,當值為空時屬性也會沒有,就會報錯 在application.properties中加入下面配置,將會解決這個問題。

資料來源,gridview只顯示錶頭

今天在做網頁時,發現gridview中的資料來源為空時,它不顯示,於是就想,能不能讓它在沒有資料來源的時候也顯示呢? 於是就在網上找資料,找到了很多,但大部分的都寫得比較複雜,經過我不懈的努力,終於找到了幾條看似比較簡單的程式碼,經過我的修改和驗證,效果出來了,現在把這些程式

用mybatis更新資料,資料0,無法更新

在bean中,count是long型別: private Long count; 需求就是利用下面的更新語句更新bills表中的count和amout <update id="updateBills" parameterType="map" >

Java過載函式,引數null,呼叫的處理

精確性原則 關於以下程式的輸出結果: public class TestNull { public void show(String a){ System.out.println("String"); } public void show(Object o)

C語言之定義一個函式,實現對字串做如下操作:字元字母,大小寫互換,字元數字,原樣輸出,有其它字元出現時,結束操作,返回已處理的字串

Action(){       char str[]={"tEst234%^road"};int len = sizeof(str)/sizeof(char);//strTest2呼叫函式lr_output_message("%s",strTest2(str,len)); r

物件get取值造成的錯誤

System.out.println("查詢到的學號和密碼:"+student.getStudent_id()+"和"+student.getPassword());當student物件為空時取值會造成錯誤

關於輸入多組測試資料,資料0,輸入結束

1.while(scanf("%d",&n)!=EOF) EOF在stdio.h中巨集定義為-1; 即有輸入時,迴圈繼續,其實,如無別的條件,一直會“輸入——處理”,“輸入——處理”的迴圈從而

android之Display.getRotation()_感測器控制螢幕旋轉

在看android自帶的samples原始碼裡面的AccelerometerPlayActivity時,看到下面這段程式碼,很不理解 public void onSensorChanged(Senso

總結iOS App開發中控制螢幕旋轉的幾種方式

在iOS6之前的版本中,通常使用 shouldAutorotateToInterfaceOrientation 來單獨控制某個UIViewController的方向,需要哪個viewController支援旋轉,只需要重寫shouldAutorotateToInterfa

解決qml畫布填充透明,不能實現實時繪圖

在做二維碼掃描時,需要做一些掃描條紋,但是發現當填充色為完全透明時,發現requestPaint()函式無法實現完全重繪的效果,解決方法:將畫布設定為半透明狀態,從而既能顯示背景影象,又能實現資料重新整理程式碼opacity:0.35;//透明度functiondrawBac

vue-cli + router生成的專案,modehistory,直接在url中輸入地址頁面訪問404,或者重新整理頁面後404

有的時候,業務中會有一些需求,直接在其他地方,比如郵件中提供系統連結,通過點選一個url直接跳轉到我們的系統中來。 在本地開發時,直接輸入對應的url就可以訪問,但是當專案部署在伺服器之後,直接輸入url就會報錯404,這是因為router本身提供的就是一個 虛擬路徑,通過

Android 通過Java程式碼控制螢幕旋轉

開發十年,就只剩下這套架構體系了! >>>   

編寫一個函數,輸入n偶數,調用方法求1/2+1/4+...+1/n,輸入n奇數,調用函數1/1+1/3+...+1/n

輸入一個數 stat 需求 ble 運算 color ring sca string 需求:編寫一個函數,輸入n為偶數時,調用方法求1/2+1/4+...+1/n,當輸入n為奇數時,調用函數1/1+1/3+...+1/n package com.Summer_0511

C# .net中cookie值中文的亂碼解決方法

一.cookie的名稱或子cookie的名稱不能為中文,否則無法獲得cookie 這個好辦,名稱不用中文即可 二.cookie的值為中文時候,取cookie的值會出現亂碼 解決辦法:存取cookie時候先解碼和編碼 存cookie,進行編碼: cookie.Valu

PostgreSQL清空表並保留表結構、清空資料庫還原資料庫新建的狀態的方法

清空表並保留表結構   一般情況下,我們使用delete刪除表中資料,但是delete是一條資料一條資料來刪除表中的資料,直至表清空(保留表結構),但是當資料量很大時,它耗時較久。   其實,刪除表資料但保留表結構使用truncate更快速安全,使用方法為:

Android實現螢幕旋轉方法總結

本文例項總結了Android實現螢幕旋轉方法。分享給大家供大家參考。具體如下: 在介紹之前,我們需要先了解預設情況下android螢幕旋轉的機制: 預設情況下,當用戶手機的重力感應器開啟後,旋轉螢幕方向,會導致當前activity發生onDestroy-> on

使用BeanUtils.populate方法轉化MapJavabeanget與set方法的命名規則

這兩天在學JavaWeb,看的是傳智播客網上書城的教學視訊。其中頁面提交表單時,使用了一個封裝好的CommonUtils類來將request.getParameterMap()獲取的Map轉為JavaBean物件。CommonUtils內部使用了commons-beanut

對象或對象屬性,如何安全給對象或對象屬性添加默認值

方案 string sign isp ignorecas 兩種 對象 習慣 比較 今天遇到的問題,也是寫代碼的習慣問題,邏輯沒有問題,但不規範,也不安全, 容易出現漏洞。 先將代碼貼出: String isPrintLogo = vodInfoDto.getIsPrint

input中的type值file,各瀏覽器的表現形式不同

button tex ati color 不同 ack 需要 標簽 圖片 如果想使各瀏覽器下的表現形式相同,需要對該input元素隱藏,然後再改元素下方添加標簽。其html寫法如下 <div class="input-file"> <input type