屏幕旋转时,遇到的问题

1,ios6屏幕旋转,所有被push出来的controller的旋转属性都由root controller中以下函数
- (NSInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

- (BOOL)shouldAutorotate {
    return YES;
}
决定,被push出来的controller的旋转属性都被root controller限定好了。如果某个controller需要独立的旋转属性,需要以present的方式推出这个controller,因为以present的方式推出的controller会被当作是一个独立的root controller。如果尝试动态修改root controller的旋转属性,来满足被push出来的controller的个性话旋转要求,被证实部分有效(比如,root controller 可以旋转,要限定push出来的子controller只支持竖屏的方式,我们在弹出子controller前,将root controller的旋转属性设置为只支持竖屏,子controller被push出来后,确实只支持竖屏,但当root controller在横屏时push这个子controller时,子controller也是横屏显示的,旋转为竖屏后,不再支持转回横屏);

2,UINavgationController 与它的rootcontroller在横屏下的frame关系;
通过观察程序运行时的log,发现:
rootController.view的frame是
origin=(x=0, y=0) size=(width=480, height=300)
而rootController.navigationController.view的frame是
origin=(x=0, y=0) size=(width=320, height=480),仍然与竖屏的尺寸是一样的,这时,可以通过以下方法将frame转换:
CGRect tmpRect = CGRectApplyAffineTransform(self.navigationController.view.frame, self.navigationController.view.transform );
转换后的尺寸为:origin=(x=0, y=-320) size=(width=480, height=320)。宽和高都正常了,origin自行调整下就ok了。

原文地址:http://blog.163.com/it__man/blog/static/137199904201301912616555/

屏幕旋转时,遇到的问题

时间: 2024-10-13 02:11:48

屏幕旋转时,遇到的问题的相关文章

Activity屏幕旋转时被销毁

之前的一个Activity的设置为android:configChanges="orientation|keyboardHidden",为保证屏幕旋转时不会重新调用各生命周期 后在修改了sdkVersion时,发现切屏时该Activity被销毁 compileSdkVersion buildToolsVersion 需要再加上ScreenSize可修复此问题 <activity    android:name=".MyApp"    android:confi

ios 屏幕,状态栏(statusbar),程序窗口 尺寸获取和屏幕旋转时的尺寸变化

app尺寸,去掉状态栏 CGRect r = [ UIScreen mainScreen ].applicationFrame; 这个尺寸不会随着屏幕旋转而交换宽高,但屏幕旋转后,会自动修改宽高减掉状态栏高度. 竖屏时(4寸):x=0, y=20, width=320, height=548 横屏时(4寸):x=0,y=0, width=300, height=568 屏幕尺寸 CGRect rx = [ UIScreen mainScreen ].bounds; (4寸)rx=x=0, y=0

安卓屏幕旋转时,禁止Activity重新加载

安卓设备旋转屏幕时,Activity默认会重新加载,如果是要读取大量数据的场景,那等待的时间比较长,这一点不可接受,所以要想办法禁止Activity自动重新加载. 方法如下在AndroidManifest.xml中修改设置: 对于指定的Activity,增加一项设置:Android:configChanges="orientation|screenSize" [html] view plain copy <activity android:name=".CheckRec

屏幕旋转学习笔记

加速计是整个IOS屏幕旋转的基础,依赖加速计,设备才可以判断出当前的设备方向,IOS系统共定义了以下七种设备方向: typedef NS_ENUM(NSInteger, UIDeviceOrientation) {     UIDeviceOrientationUnknown,     UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom     UIDev

iOS学习笔记(3)— 屏幕旋转

iOS学习笔记(3)— 屏幕旋转 一.屏幕旋转机制: iOS通过加速计判断当前的设备方向和屏幕旋转.当加速计检测到方向变化的时候,屏幕旋转的流程如下: 1.设备旋转时,系统接收到旋转事件. 2.系统将旋转事件通过AppDelegate通知当前的主Window. 3.window通知它的rootViewController. 4.rootViewController判断所支持的旋转方向,完成旋转. iOS系统中屏幕旋转事件没有像触碰事件那样进行hitTest,所以只有rootViewControl

Android 屏幕旋转适配全解析

原创文章,转载请注明 ( 来自:http://blog.csdn.net/leejizhou/article/details/51233342 李济洲的博客 ) 这篇博文给大家介绍下,当手机屏幕旋转时我们应当怎么去处理,首先了解下默认情况下Android进行屏幕旋转的原理,当手机进行旋转时重力感应sensor起到作用,会将Activity销毁并按照横屏的屏幕尺寸进行重新构造,生命周期如下图所示,一句话总结就是默认情况下Activity进行屏幕旋转会自动进行onDestroy并重新onCreate

Android 屏幕旋转生命周期以及处理方法

工作期间项目需要经常旋转屏幕,还有平板.所以会经常考虑Android 屏幕旋转生命周期,所以也有相应的处理方法.主要有两种办法解决.是根据屏幕旋转的生命周期具体使用.屏幕旋转时候,如果不做任何处理,activity会经过销毁到重建的过程.这种效果都不是想要的. 一.方法一 是在配置文件的activity加上这个 android:configChanges="keyboardHidden|orientation|screenSize"  这句话意思就是配置双引号里面参数意义,软键盘隐藏,

android的屏幕旋转

1. 不做任何处理的情况下 如果没有针对性地做任何处理的话,默认情况下,当用户手机的重力感应器打开后,旋转屏幕方向,会导致app的当前activity发生onDestroy-> onCreate,会重新构造当前activity和界面布局,很多横屏/竖屏的布局如果没有很好的设计的话,转换为竖屏/横屏后,会显示地很难看. 如果想很好地支持屏幕旋转,则建议在res中建立layout-land和layout-port两个文件夹,把横屏和竖屏的布局文件放入对应的layout文件夹中. 2. 如何设置固定的

【分享】迅为iTOP4412开发板-Android系统屏幕旋转设置

1.1概述 Android4.0,Androd4.4源代码能够编译成手机模式和平板模式,讯为iTop4412 开发平台 的Android系统默认编译为平板模式.客户须要依据自己的产品设计及应用环境,切换屏幕 的显示方向,或者固定好一个显示方向,比如产品中使用不同分辨率的显示屏,或者显示屏 在产品中的固定方向发生改变等等,都须要进行屏幕旋转功能.  那么怎样设置屏幕的旋转 呢?我们提供两种方式满足客户的这一需求. 1.2  安装屏幕旋转APK 迅为公司公布的  Android4.4镜像中含有  S