关于iphone的屏幕方向

之前在应用开发的时候,一直对iphone开发中 响应屏幕旋转事件 很困惑,最近看了一些博友的文章,再加上我自己的总结,大概理清了其中的关系!在此分享,希望对大家会有帮助,讲的不对的地方,还请大家指正:



首先,我们先来看一下什么样的UIViewController具有响应屏幕旋转事件的权限:

我在cocoa china看到过一个同僚说 要直接把view add成为window的subview的controller才会触发,官方文档里有写到,还有就是controller不能release掉,要满足这两个条件才能具有该权限!


第二我们要理清,方向分两种,一种是设备的方向,一种是视图方向

设备方向有两种方式可以改变,一个是通过重力加速计,即旋转屏幕的方式去改变,一个是通过代码,调用UIDevice的方式去改变!


而视图方向呢,就是大家最关注的了,我们可以通过去响应 设备方向改变触发的事件去改变视图的方向,即我们重写我们常用的shouldAutorotateToInterfaceOrientation 和willRotateToInterfaceOrientation方法了!前者设置响应哪个设备方向,后者就具体写怎么去响应这些方向上的事件! 


  第三,有了上面的概念,我们就可以实现一些关于旋转屏幕的效果了,比如你想你的视图 自打开开始一直到处于横屏状态,而不去响应其他的设备方向的改变事件,我们可以在程序的一开始就设置设备的方向是横屏(通过地调用UIDevice),然后在shouldAutorotateToInterfaceOrientation里面设置视图只响应横向设备改变触发的事件,这样屏幕就可以保持横屏了!




第四,好多博客都有讲到的,就是怎么处理旋转后视图上组件的排列,有两种方式,一种是 用Interface Builder工具,工具有自动处理的方式。另一种方式是 加载另外一个nib文件(如果是用代码布局的话,则重写布局代码)!详细可以参考:http://lupingui.iteye.com/blog/869880




最后,在iOS5里面uiviewcontroller新加了一个attemptRotationToDeviceOrientation的类方法,就是如果你当前的视图方向 不符合设备当前的方向,就会调用该方法去匹配试图和设备的方向,不过估计短时间内大家不会用到这个方法!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值