關於同步ios6和ios5旋屏問題
相信大家都知道,ios6並不支援 shouldAutorotateToInterfaceOrientation 而強制開啟項目的所有方向旋屏,會給一部分項目帶來不便,特別是rootController是橫屏的情況下,如果縱向放置會出現明顯的錯位,這點在ios5會出現,ios6系統自動檢測了,這裡簡單介紹下我的處理方法:
第一步:(這裡預設項目是橫屏的,只有部分控制器支援全方位旋轉)
設定項目方向
第二步:
在項目的AppDelegate檔案加入
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
return UIInterfaceOrientationMaskAll;
}
告訴項目這個支援所有方向的旋轉 — 為後面的支援做鋪墊,如果項目沒聲明這個,加上第一步沒開啟所有方向,那麼後面有些旋屏會出現錯位
第三步:
在只需要橫屏的控制器內添加
// ios5下的旋屏
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
// ios6下的旋屏
-(BOOL)shouldAutorotate {
return YES;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
在需要全方位旋屏的控制器內添加
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
-(BOOL)shouldAutorotate {
return YES;
}
這樣就很好的解決了兩個版本的全方向旋屏問題,這裡解釋不這樣處理會有什麼情況
A:開啟了項目的所有方向,即第一步的所有方向全開啟,這樣做在ios6下完成正常,但是在ios5的第一個控制器(不是開始頁面default)會出現縱屏現象(當然是你放置的位置為縱向才會出現 * _ * 這都知道的事不再多說)
B:如果沒有在AppDelegate聲明項目方向,在控制器旋屏情況下有時候會卡屏,選不過來,而且會有嚴重的錯位
原文http://www.jcsample.com/jcsample/archives_399.html