关于IOS屏幕的旋转问题

处理IPhone屏幕的旋转是我们经常遇到的,当你做一个应用既然满足竖屏又要满足横屏,这就要求我们会处理屏幕旋转的问题!

方法一:自动布局

1.将项目中界面的四种手持方式都点上;

2.取消Use Autolayout;

3.选择界面中某个控件然后到属性工具栏中去找到AutoSizing功能,勾选对应的绝对定位的线条

4.重写可以旋转的方法

-(BOOL)shouldAutorotate
{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

方法二:手动布局一(通过代码改view种控件的坐标)

1.重写可以旋转的方法

-(BOOL)shouldAutorotate
{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

2.勾选上项目中支持的四种手持类型

3.取消Use Autolayout

4.代码实现:

//每当屏幕旋转的时候都会触发一个
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    //如果是是横屏状态
    if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft )
    {
        self.l1.frame = CGRectMake(20, 25, 110, 110);
        self.l2.frame = CGRectMake(162, 25, 110, 110);
        self.l3.frame = CGRectMake(304, 25, 110, 110);
        self.r1.frame = CGRectMake(20, 178, 110, 110);
        self.r2.frame = CGRectMake(162, 178, 110, 110);
        self.r3.frame = CGRectMake(304, 178, 110, 110);}
}

方法三:手动布局二(在xib中新建一个支持横屏的view通过双view切换实现)

1.在xib文件中拖一个view控件,选择Orientation属性为横屏

2.布局好界面

3.将横纵view分别在controller.h文件中创建对应的属性,命名为

@property (retain,
nonatomic) IBOutlet UIView *landspaceView;

@property (retain,
nonatomic) IBOutlet UIView *portatiorView;

4.代码实现

宏定义实现角度转弧度

#define degreesToRadia(x) (M_PI * (x) / 180)//参数要加括号 ,尤其是参数附近特别要加括号

-(BOOL)shouldAutorotate
{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}
//每当屏幕旋转的时候都会触发一个
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    //如果是是横屏状态
    if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft )
    {
//        self.l1.frame = CGRectMake(20, 25, 110, 110);
//        self.l2.frame = CGRectMake(162, 25, 110, 110);
//        self.l3.frame = CGRectMake(304, 25, 110, 110);
//        self.r1.frame = CGRectMake(20, 178, 110, 110);
//        self.r2.frame = CGRectMake(162, 178, 110, 110);
//        self.r3.frame = CGRectMake(304, 178, 110, 110);
        self.view = self.landspaceView;
        //self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadia(270));
        self.view.bounds = CGRectMake(0, 0, 480, 300);
    }
    else if(toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
//        self.l1.frame = CGRectMake(37, 20, 110, 110);
//        self.l2.frame = CGRectMake(37, 162, 110, 110);
//        self.l3.frame = CGRectMake(37, 304, 110, 110);
//        self.r1.frame = CGRectMake(190, 20, 110, 110);
//        self.r2.frame = CGRectMake(190, 162, 110, 110);
//        self.r3.frame = CGRectMake(190, 304, 110, 110);
        self.view = self.landspaceView;
        //self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadia(90));
        self.view.bounds = CGRectMake(0, 0, 480, 300);
    }
    else if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
    {
        self.view = self.portatiorView;
        self.view.transform = CGAffineTransformIdentity;
        self.view.bounds = CGRectMake(0, 0, 320, 460);
    }
    else if(toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        self.view = self.portatiorView;
        //self.view = self.landspaceView;
        //self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadia(180));
        self.view.bounds = CGRectMake(0, 0, 320, 460);
    }
}

模拟屏幕旋转
commond + 方向键

时间: 2024-12-12 16:25:15

关于IOS屏幕的旋转问题的相关文章

ios 屏幕旋转-IOS实现单个ViewController屏幕旋转?

问题描述 IOS实现单个ViewController屏幕旋转? 如何像微博那样只有在查看图片的ViewController中使得屏幕可以旋转? 解决方案 iOS 5.1实现旋转屏幕 解决方案二: 只在对应的controller打开屏幕旋转,实现代理方法即可

iOS屏幕适配开发实用技巧_IOS

一.旋转处理 第一步:注册通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeFrames:) name:UIDeviceOrientationDidChangeNotification object:nil]; 第二步:处理接收事件 -(void)changeFrames:(NSNotification *)notification{ NSLog(@"change notifica

Win8系统平板电脑怎么设置屏幕自动旋转功能

  Win8系统平板电脑怎么设置屏幕自动旋转功能           一般在右侧工具栏(CharmBar)中进行屏幕旋转设置; 但发现侧边栏中没有自动转屏功能,只有调节亮度和其他选项 开启方法: 1.在平板win8系统右侧边栏中搜索"Services"并打开Services设置; 2.打开Services设置窗口后,并找到"Sensor Monitoring Service"选项并鼠标右键菜单选择启动类型为"自动"状态; 3.再次打开右侧工具栏(

ios屏幕亮度调整后,锁屏开启恢复原状问题。

问题描述 ios屏幕亮度调整后,锁屏开启恢复原状问题. 在程序中,我用一下代码调整亮度 [[UIScreen mainScreen] setBrightness:0.2]; 但是锁屏后再进入应用,屏幕亮度就会恢复到代码调整前的亮度. 这里应该是由于iOS屏幕亮度自适应导致的. 在android中好像有一个resume的方法可以恢复到之前调整的状态,不知道iOS里面有没有类似的方法.

iOS屏幕适配-iOS笔记

学习目标 1.[了解]屏幕适配的发展史 2.[了解]autoResizing基本用法 3.[掌握]autoLayout 的基本用法 4.[掌握]autoLayout代码实现 5.[理解]sizeClass的基本用法 一.屏幕适配的发展史 随着iOS屏幕尺寸越来越多样化,屏幕适配也就越来越重要了. iphone1 - iphone3gs时代,window的size固定为(320,480).我们只需要简单计算一下相对位置就好了,不需要做屏幕适配. iphone4 - iphone4s时代,苹果推出了

iOS渐变圆环旋转动画CAShapeLayer CAGradientLayer_IOS

iOS渐变圆环旋转动画CAShapeLayer CAGradientLayer shape.gif demo.png - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. CALayer *layer = [CALayer layer]; layer.backgroundColor = [UIColor redColor

荣耀6 Plus屏幕自动旋转怎么设置

方法一,我们在6Plus手机主页,然后下拉智能栏菜单,然后你就会看到有一个[自动旋转]按钮开关,在此我们就可以对屏幕进行开关操作了: 方法二,在手机的"设置"进入后我们找到[显示]之后我们再点击进入: 2,在进入到显示界面你也会看到一个[自动旋转屏幕]开关默认是开启的,点击右侧的关闭即可,如下图所示: 好了这样关于2种对于荣耀6 Plus屏幕自动旋转的设置就介绍完了,其实非常的简单方法一更简单更快捷了.

小米3手机屏幕不能旋转解决办法

具体步骤 1.我们在小米手机扣"设置--个人--显示--自动旋转屏幕" 如下图所示. 2.如果上面不行我们可以在打电话的界面面输入,这是这串符号*#*#64663#*#*,我输入后屏幕出现了一长串菜单,如下图所示: 3.屏幕出现了一长串菜单,会出很多选项了,我们找到"加速度感应器测试" 如下图所示. 4.然后我们就可以测试时手机要放在水平桌面上,最后选择通过,如下图所示: 5.测试完之后我们就可以常手机会不会自动旋转了: 6.如果使用手机功能检测之后,仍旧出现屏幕不

苹果iphone5/5s/5c怎么关闭开启屏幕自动旋转

具体如下 关闭屏幕自动旋转 1.快速的按下home键两次,即为手机正面的哪个按键. 2.即会出现如图所示的界面,点击图左下方的哪个按钮,几款操作iphone的自动旋转功能, 开启屏幕自动旋转 1.下home按键向左滑有个旋转的图标点一下里边有个锁就不会旋转了 2.看图 双击后出现是这样 3.然后向左边拉动 现在的iphone4s与iphone4都可以这样来开启与关闭屏幕自动旋转功能哦.