码迷,mamicode.com
首页 > 移动开发 > 详细

【 Beginning iOS 7 Development《精通iOS7开发》】05 Autorotation and Autosizing

时间:2014-07-16 14:16:14      阅读:312      评论:0      收藏:0      [点我收藏+]

标签: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 ()@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.3 使用约束Contstraints

bubuko.com,布布扣


    3.4 当上面的Contraints办法满足不了时,关闭掉它,让后在ViewController.m中通过代码实现。

bubuko.com,布布扣


//
//  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,布布扣,bubuko.com

【 Beginning iOS 7 Development《精通iOS7开发》】05 Autorotation and Autosizing

标签:ios   屏幕旋转   

原文地址:http://blog.csdn.net/gogler/article/details/37873277

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!