zoukankan      html  css  js  c++  java
  • 【 Beginning iOS 7 Development《精通iOS7开发》】05 Autorotation and Autosizing

    一、旋转后相对位置不变





    二、旋转后相对位置变化

     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.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
    






  • 相关阅读:
    PMAC运动程序例程(一)
    【译】移动王国的诱惑【经济学人】
    粒子生物学【经济学人】
    快到家了【经济学人】
    关于贝加莱Modbus通讯的总结
    关于贝加莱Modbus通讯的总结
    移动王国的诱惑【经济学人】
    什么是Modbus
    动物精神【经济学人】
    什么是Modbus
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6921381.html
Copyright © 2011-2022 走看看