在iOS5.1 和 之前的版本中, 我們通常利用 shouldAutorotateToInterfaceOrientation: 來單獨控制某個UIViewController的旋屏方向支持,比如:
復制代碼 代碼如下:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
但是在iOS6中,這個方法被廢棄了,使用無效。
shouldAutorotateToInterfaceOrientation:
Returns a Boolean value indicating whether the view controller supports the specified orientation. (Deprecated in iOS 6.0. Override the supportedInterfaceOrientations andpreferredInterfaceOrientationForPresentation methods instead.)
實踐后會發現,通過supportedInterfaceOrientations的單獨控制是無法鎖定屏幕的。
復制代碼 代碼如下:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
多次實驗后總結出控制屏幕旋轉支持方向的方法如下:
子類化UINavigationController,增加方法
復制代碼 代碼如下:
- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}
并且設定其為程序入口,或指定為 self.window.rootViewController
隨后添加自己的view controller,如果想禁止某個view controller的旋屏:(支持全部版本的控制)
復制代碼 代碼如下:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
如果想又開啟某個view controller的全部方向旋屏支持:
復制代碼 代碼如下:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
-(BOOL)shouldAutorotate
{
return YES;
}
從而實現了對每個view controller的單獨控制。
順便提一下,如果整個應用所有view controller都不支持旋屏,那么干脆:
復制代碼 代碼如下:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}
橫豎屏切換,視圖亂了怎么辦?
首先,我們必須了解一下下列4種狀態,它們被用來描述設備旋轉方向:

對于旋屏的處理,大致分為如下幾種情況和思路:
也許,你不需要旋屏支持,而希望鎖定屏幕
復制代碼 代碼如下:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return NO;
}
也許,你需要支持旋屏,或者支持部分方向的旋屏
復制代碼 代碼如下:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
也許,你的view有張背景圖,旋屏時系統幫助你拉伸了圖片,但是卻沒有管你的其它部件,比如button,你希望直接改變button的大小和位置
復制代碼 代碼如下:
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
NSLog(@"現在是豎屏");
[btn setFrame:CGRectMake(213, 442, 340, 46)];
}
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
NSLog(@"現在是橫屏");
[btn setFrame:CGRectMake(280, 322, 460, 35)];
}
}
也許,你并不希望用絕對坐標去約束控件,而是希望讓它通過旋轉自己適應屏幕的旋轉
復制代碼 代碼如下:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIDevice *device = [UIDevice currentDevice];
[device beginGeneratingDeviceOrientationNotifications];
//利用 NSNotificationCenter 獲得旋轉信號 UIDeviceOrientationDidChangeNotification
NSNotificationCenter *ncenter = [NSNotificationCenter defaultCenter];
[ncenter addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:device];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
-(void)rotation_btn:(float)n
{
UIButton *robtn = self.btn;
robtn.transform = CGAffineTransformMakeRotation(n*M_PI/180.0);
}
-(void)orientationChanged
{
UIDeviceOrientation orientaiton = [[UIDevice currentDevice] orientation];
switch (orientaiton) {
caseUIDeviceOrientationPortrait:
[self rotation_btn:0.0];
break;
caseUIDeviceOrientationPortraitUpsideDown:
[self rotation_btn:90.0*2];
break;
caseUIDeviceOrientationLandscapeLeft:
[self rotation_btn:90.0*3];
break;
caseUIDeviceOrientationLandscapeRight:
[self rotation_btn:90.0];
break;
default:
break;
}
}
也許,你需要autoresizesSubviews = YES
也許,你希望橫豎屏有不同的布局效果,需要準備2份Subview,在不同狀態去替換
當然不要忘記,需要調節設定圖示中的1、2處,

來幫助我們完成自己想要的適應效果。Example 動畫呈現的很清晰,^_^ 我就不再亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品视|
91免费观看网站|
欧美成人免费一级人片100|
亚洲欧美国产va在线影院|
亚洲成人av在线|
国产+成+人+亚洲欧洲|
91探花福利精品国产自产在线|
国内精品久久久久影院 日本资源|
国产精品成人久久久久|
欧美中文字幕在线视频|
欧美成人精品一区二区三区|
国产欧美日韩免费|
欧美成人小视频|
亚洲天堂网在线观看|
国产婷婷色综合av蜜臀av|
欧美小视频在线|
久久久久久久av|
久久久久女教师免费一区|
午夜精品在线观看|
国产一区二区三区四区福利|
91精品免费看|
国产精品福利在线观看|
98午夜经典影视|
91经典在线视频|
久久综合伊人77777|
欧洲s码亚洲m码精品一区|
国产成人精品久久二区二区91|
欧美国产精品va在线观看|
国产有码在线一区二区视频|
久久激情视频久久|
日韩精品在线观看一区|
色综合久综合久久综合久鬼88|
精品成人在线视频|
精品中文字幕在线|
久久久国产成人精品|
久久久久久久久久国产精品|
久久久在线免费观看|
国产成人综合亚洲|
亚洲激情在线视频|
国产亚洲aⅴaaaaaa毛片|
北条麻妃99精品青青久久|
久久精品91久久久久久再现|
亚洲免费高清视频|
亚洲天堂男人天堂女人天堂|
色综合天天狠天天透天天伊人|
亚洲精品中文字幕有码专区|
亚洲一区中文字幕在线观看|
国产精品欧美一区二区|
欧美成人性生活|
国产精品6699|
97久久精品视频|
91精品国产综合久久香蕉的用户体验|
亚洲人午夜精品免费|
日韩视频―中文字幕|
欧美美女18p|
日韩av中文字幕在线免费观看|
亚洲美女www午夜|
全亚洲最色的网站在线观看|
91中文字幕在线|
亚洲剧情一区二区|
久久久久久久久91|
国产精品a久久久久久|
国产精品自产拍在线观|
中文字幕亚洲一区二区三区|
国产一区二区在线免费|
久久久亚洲天堂|
8090成年在线看片午夜|
最近中文字幕mv在线一区二区三区四区|
日韩成人小视频|
最近的2019中文字幕免费一页|
欧美成人黑人xx视频免费观看|
91精品久久久久久久久久久久久久|
久久亚洲国产精品成人av秋霞|
久久国产加勒比精品无码|
久久亚洲精品中文字幕冲田杏梨|
91久久国产综合久久91精品网站|
色妞一区二区三区|
992tv成人免费视频|
亚洲色图国产精品|
欧美一级电影在线|
日韩精品www|
国产一区二区动漫|
欧美国产视频日韩|
97超级碰碰碰久久久|
国产一区二区欧美日韩|
最近免费中文字幕视频2019|
精品动漫一区二区三区|
久久99热精品|
久久久精品免费视频|
日韩成人在线网站|
日韩高清电影好看的电视剧电影|
米奇精品一区二区三区在线观看|
亚洲国产欧美久久|
亚洲国产精品一区二区久|
国产精品日韩av|
欧美最猛黑人xxxx黑人猛叫黄|
国产精品黄页免费高清在线观看|
国产ts人妖一区二区三区|
亚洲毛茸茸少妇高潮呻吟|
中国china体内裑精亚洲片|
91天堂在线视频|
国产精品偷伦免费视频观看的|
国产偷国产偷亚洲清高网站|
欧美亚洲在线观看|
国产精品尤物福利片在线观看|
久久精品国产成人|
欧美精品电影免费在线观看|
国产精品91久久|
亚洲3p在线观看|
亚洲激情视频网|
亚洲mm色国产网站|
欧美夫妻性生活视频|
国产日韩在线精品av|
www国产亚洲精品久久网站|
久久全球大尺度高清视频|
欧美寡妇偷汉性猛交|
国产精品视频白浆免费视频|
国产精品精品视频|
欧美性高潮床叫视频|
亚洲最大福利视频|
欧美性感美女h网站在线观看免费|
欧美极品少妇全裸体|
国产成人一区二区|
久久天天躁狠狠躁夜夜躁2014|
亚洲成人性视频|
68精品国产免费久久久久久婷婷|
国产成人精品电影|
国产精品视频久久久|
色妞久久福利网|
国产精品h片在线播放|
国产精品久久久久91|
亚洲男女自偷自拍图片另类|
中文字幕在线日韩|
久久影视电视剧免费网站|
国产精品久久久久久久久久久新郎|
欧美激情伊人电影|
插插插亚洲综合网|
国产丝袜一区二区三区免费视频|
中文字幕av一区二区|
日韩中文字幕免费|
久久躁狠狠躁夜夜爽|
日本乱人伦a精品|
国产精品久久一区主播|
欧美精品久久久久|
亚洲一区二区少妇|
自拍偷拍亚洲精品|
91精品综合久久久久久五月天|
国产精品av在线播放|
日韩精品在线视频|
日本高清+成人网在线观看|
国语自产精品视频在线看|
国内精品美女av在线播放|
久久免费视频观看|
国产精品成av人在线视午夜片|
欧美又大又粗又长|
亚洲欧美精品在线|
亚洲黄色在线观看|
欧美日韩免费网站|
久久激情五月丁香伊人|
欧美影院久久久|
欧美精品在线免费|
精品视频久久久久久久|
国产欧美精品一区二区|
亚洲第一色中文字幕|