处理屏幕旋转

1.获取HOME键方向

视图控制器本身能检测到屏幕的旋转,如果要处理屏幕旋转,需要重写方法

supportedInterfaceOrientations(设置设备支持旋转的方法, 如果不添加,视图控制器将无法检测到屏幕的旋转)

旋转后键盘收回

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

视图控制器会自动调整view的大小以适应屏幕的旋转,bounds被修改,触发view的layoutSubviews的方法

所以重写layoutSubviews方法,根据设备方向,重新布局

layoutSubviews方法:这个方法,默认没有做任何事情,需要子类进行重写

注意:layoutSubviews在以下情况下会被调用:

  1. init初始化不会触发layoutSubviews
  2. 但是是用initWithFrame 进行初始化时,当rect的值不为CGRectZero时,也会触发
  3. addSubview会触发layoutSubviews
  4. 设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
  5. 滚动一个UIScrollView会触发layoutSubviews
  6. 旋转Screen会触发父UIView上的layoutSubviews事件
  7. 改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

2.获取状态栏的方向

[UIApplication sharedApplication].statusBarOrientation

时间: 2024-12-22 05:23:24

处理屏幕旋转的相关文章

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

出处:http://blog.csdn.net/lmj623565791/article/details/37936275 1.概述 众所周知,Activity在不明确指定屏幕方向和configChanges时,当用户旋转屏幕会重新启动.当然了,应对这种情况,Android给出了几种方案: a.如果是少量数据,可以通过onSaveInstanceState()和onRestoreInstanceState()进行保存与恢复. Android会在销毁你的Activity之前调用onSaveInst

1016-03-父子控制器-----屏幕旋转事件的传递

1. ARC里面默认情况下所有指针都是强指针. 2. 在演示 设置两个控制器的关系为 父子控制器的关系的时候,将一个控制器B 的view加到 A控制器的view上去的时候,如果A.B不为父子控制器的关系时,旋转屏幕 的时候 B控制器是不能监听到屏幕的旋转的.只有A控制器可以监听到屏幕旋转. 3. 屏幕旋转事件是由窗口发出的.窗口会将事件传给它的根控制器. /** 监听旋转 */ - (void)willRotateToInterfaceOrientation:(UIInterfaceOrient

ios(ipad,iphone)屏幕旋转检测通用方法

在特别的场景下,需要针对屏幕旋转作特殊处理.在ios系统下实现相关的功能还是比较方便的. 我下面介绍两种方法: 1.注册UIApplicationDidChangeStatusBarOrientationNotification通知(举例:在一个viewcontroller类的viewdidload中注册该通知),示例代码如下: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarO

屏幕旋转学习笔记

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

iOS屏幕旋转方向的相关方法

在iOS应用开发过程中,经常会遇到设置屏幕方向,或者根据屏幕方向改变界面的时候,所以现在就来说一下屏幕方向的那些事情. 关于方向,经常会遇到以下的两个对象: 1.UIDeviceOrientation(机器设备的方向) ================================== UIDeviceOrientationUnknown //未知方向 UIDeviceOrientationPortrait, //设备直立,home按钮在下 UIDeviceOrientationPortrai

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

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

屏幕旋转

视图控制器本身能检测到屏幕的旋转,如果要处理屏幕旋转,需要重写方法 supportedInterfaceOrientations(设置设备支持旋转的方法, 如果不添加,视图控制器将无法检测到屏幕的旋转) 旋转后键盘收回 的方法 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 视图控制器会自动

HTML5-javascript屏幕旋转事件:onorientationchange

/* 屏幕旋转事件:onorientationchange 添加屏幕旋转事件侦听,可随时发现屏幕旋转状态(左旋.右旋还是没旋) */ // 判断屏幕是否旋转 function orientationChange() { switch(window.orientation) { case 0: alert("肖像模式 0,screen-width: " + screen.width + "; screen-height:" + screen.height); brea

牛B的swift屏幕旋转经验终结者(OC统一思路)

牛B的swift屏幕旋转经验终结者(OC统一思路) 1.AppDelegate (1)定义变量 var blockRotation: Bool = false (2)定义方法 Swift代码 func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { if self.blockRotat

Activity屏幕旋转时被销毁

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