【 Beginning iOS 7 Development《精通iOS7開發》】05 Autorotation and Autosizing
阿新 • • 發佈:2017-05-30
red sca size objc support layout dsm iboutlet cti
一、旋轉後相對位置不變
二、旋轉後相對位置變化
2.1默認:
2.2調整後
三、小結
3.1 在APP級別設置支持哪些方向:
3.2 在viewController(xlib)級別設置支持哪些方向:
#import "JAViewController.h" @interface JAViewController () @end @implementation 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.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
【 Beginning iOS 7 Development《精通iOS7開發》】05 Autorotation and Autosizing