標籤:ios 旋轉螢幕
一、旋轉後相對位置不變
<img src="http://img.blog.csdn.net/20140716104252587?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></strong></p><p><strong><span style="font-size:24px"><img src="http://img.blog.csdn.net/20140716104037843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></strong></p><p><strong><span style="font-size:24px"></span></strong></p><p><strong><span style="font-size:24px"><span style="font-size:24px"><strong>二、旋轉後</strong></span>相對位置變化</span></strong></p><p><strong><span style="font-size:24px"> 2.1預設:</span></strong></p><p><strong><span style="font-size:24px"><img src="http://img.blog.csdn.net/20140716104736835?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20140716104742795?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20140716104755025?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></strong></p><p><strong><span style="font-size:24px"></span></strong></p><p><strong><span style="font-size:24px"></span></strong></p><p><strong><span style="font-size:24px"> 2.2調整後</span></strong></p><p><strong><span style="font-size:24px"></span></strong></p><p><strong><span style="font-size:24px"><img src="http://img.blog.csdn.net/20140716104652390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20140716104713828?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20140716104957298?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20140716104734375?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></strong></p><p><strong><span style="font-size:24px"></span></strong></p><p><strong><span style="font-size:24px">三、小雞 </span></strong></p><p><strong><span style="font-size:24px"> 3.1 在APP層級設定支援哪些方向:</span></strong></p><p><strong><span style="font-size:24px"> <img src="http://img.blog.csdn.net/20140716105023312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29nbGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></strong></p><p><strong><span style="font-size:24px"></span></strong></p><p><strong><span style="font-size:24px"> 3.2 在viewController(xlib)層級設定<strong><span style="font-size:24px">支援哪些方向</span></strong></span></strong></p><p><strong><span style="font-size:24px"></span></strong></p><p><strong><span style="font-size:24px"></span></strong></p><pre code_snippet_id="427694" snippet_file_name="blog_20140716_2_4821943" name="code" class="objc">//// JAViewController.m// Orientations//// Created by jason on 14-7-15.// Copyright (c) 2014年 jason. All rights reserved.//#import "JAViewController.h"@interface JAViewController ()@[email protected] JAViewController- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}//重寫這個方法-(NSUInteger)supportedInterfaceOrientations{// return (UIInterfaceOrientationMaskPortrait|UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskPortraitUpsideDown);// return UIInterfaceOrientationMaskAll; return (UIInterfaceOrientationMaskLandscapeRight|UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskPortraitUpsideDown);}@end
3.3 使用約束Contstraints
3.4 當上面的Contraints辦法滿足不了時,關閉掉它,讓後在ViewController.m中通過代碼實現。
//// JAViewController.m// Restructure//// Created by jason on 14-7-16.// Copyright (c) 2014年 jason. All rights reserved.//#import "JAViewController.h"@interface JAViewController ()@property (weak, nonatomic) IBOutlet UIButton *actionButton1;@property (weak, nonatomic) IBOutlet UIButton *actionButton2;@property (weak, nonatomic) IBOutlet UIButton *actionButton3;@property (weak, nonatomic) IBOutlet UIButton *actionButton4;@property (weak, nonatomic) IBOutlet UIView *contentView;@end@implementation JAViewController- (void)viewDidLoad{ [super viewDidLoad];// 從這裡開始 UIApplication *app = [UIApplication sharedApplication]; UIInterfaceOrientation currentOrientation = app.statusBarOrientation; [self doLayoutForOrientation:currentOrientation];//跳轉到實際處理處}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}//從這裡開始-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [self doLayoutForOrientation:toInterfaceOrientation]; }//確定當前方向-(void)doLayoutForOrientation:(UIInterfaceOrientation)orientation{ if (UIInterfaceOrientationIsPortrait(orientation)) { [self layoutPortrait]; } else { [self layoutLandscape]; }}static const CGFloat buttonHeight = 40;static const CGFloat buttonWidth = 120;static const CGFloat spacing = 20;//豎向處理- (void)layoutPortrait { CGRect b = self.view.bounds; CGFloat contentWidth = CGRectGetWidth(b) - (2 * spacing); CGFloat contentHeight = CGRectGetHeight(b) - (4 * spacing) - (2 * buttonHeight); self.contentView.frame = CGRectMake(spacing, spacing, contentWidth, contentHeight); CGFloat buttonRow1y = contentHeight + (2 * spacing); CGFloat buttonRow2y = buttonRow1y + buttonHeight + spacing; CGFloat buttonCol1x = spacing; CGFloat buttonCol2x = CGRectGetWidth(b) - buttonWidth - spacing; self.actionButton1.frame = CGRectMake(buttonCol1x, buttonRow1y, buttonWidth, buttonHeight); self.actionButton2.frame = CGRectMake(buttonCol2x, buttonRow1y, buttonWidth, buttonHeight); self.actionButton3.frame = CGRectMake(buttonCol1x, buttonRow2y, buttonWidth, buttonHeight); self.actionButton4.frame = CGRectMake(buttonCol2x, buttonRow2y, buttonWidth, buttonHeight);}//橫向處理- (void)layoutLandscape { CGRect b = self.view.bounds; CGFloat contentWidth = CGRectGetWidth(b) - buttonWidth - (3 * spacing); CGFloat contentHeight = CGRectGetHeight(b) - (2 * spacing); self.contentView.frame = CGRectMake(spacing, spacing, contentWidth, contentHeight); CGFloat buttonX = CGRectGetWidth(b) - buttonWidth - spacing; CGFloat buttonRow1y = spacing; CGFloat buttonRow4y = CGRectGetHeight(b) - buttonHeight - spacing; CGFloat buttonRow2y = buttonRow1y + floor((buttonRow4y - buttonRow1y) * 0.333); CGFloat buttonRow3y = buttonRow1y + floor((buttonRow4y - buttonRow1y) * 0.667); self.actionButton1.frame = CGRectMake(buttonX, buttonRow1y, buttonWidth, buttonHeight); self.actionButton2.frame = CGRectMake(buttonX, buttonRow2y, buttonWidth, buttonHeight); self.actionButton3.frame = CGRectMake(buttonX, buttonRow3y, buttonWidth, buttonHeight); self.actionButton4.frame = CGRectMake(buttonX, buttonRow4y, buttonWidth, buttonHeight);}@end