IOS自动旋转
iphone中很多应用都是可以根据你手机旋转的方向自适应屏幕的方向,当然不是所有的应用都支持这个功能,这个具体是看应用开发人员有没有开发相应的功能,需要不
需要这个功能也得看具体情况和需求,但是有一点请相信,实现这种效果并不难。本文就从一个入门的新手出发写一下我对这方面的学习总结。
Iphone4,4s在竖直放的时候,视图高是480#px,宽是320#px,如果加状态栏高就是460px,横放的时候,高是320px,宽是480px,加状态栏高是300px.
三种实现方式:1、所有对象的自动调整,
2、手动调整对象的位置
3、为应用开发不同方向上的视图版本。
无论使用哪种方法都需要覆盖UIViewController的方法。
当手机方向发现改变的时候 ,系统会调用shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientataion interfacetion)来询问应用是否支持
对应方向的改变,支持就返回true,默认的实现只支持一个方向上的,也就是禁止了自动旋转的功能。要想开启就在想支持的方向上返回true即可。
我现在的学习环境是mac10.8,xcode4.5,在此时IOS是6.0,在IOS6.0中已经废弃了shouldAutorotateToInterfaceOrientation方法,所以也就不有上在的覆盖方法
了,那么它是通过什么方式来做到让应用在相应方向上是否支持自动旋转呢,我觉得是在这里。
四个方向上的旋转支持,默认是四个方向都支持的,如果只想支持某个方向或者某些方向,选择相应的方向就可以了,那里的设置能自动对四个方向上的旋转支持,但不支持upsidedown方向上的,要想能支持还得在程序中做。实现方式如下大概:
只支持portait,不能旋转:
-(BOOL)shouldAutorotate
{
return NO;
}
支持旋转:
-(BOOL)shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape; //UIInterfaceOrientationMaskLandscape、UIInterfaceOrientationMaskAll、 UIInterfaceOrientationMaskAllButUpsideDown
}
考虑到兼容低版本,最好加上:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return YES;
}
简单说明:
UIInterfaceOrientationMaskLandscape 支持左右横屏
UIInterfaceOrientationMaskAll 支持四个方向旋转
UIInterfaceOrientationMaskAllButUpsideDown 支持除了UpsideDown以外的旋转
1、自动调整属性来适应自动旋转
这个方式的实现不用我们编写代码,只要在interface builder中设置即可,
说到interface builder 不知道IOS6.0以前是什么样的,IOS6.0里面是有个Storyboards,它是interface builder的的升级一样,比它更好用一些,
同时IOS6下新建的项目默认是自动垃圾回收的,所以不想用S#toryboards和自动垃圾回收的话,就得在新建项目的时候 ,在这里把勾去掉,如下图。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>