如何实现ios屏幕的横竖屏自适应

补充: return UIInterfaceOrientationMaskAllButUpsideDown; 这里的返回值会覆盖掉plist里面的值,所以,要么只设置plist里面的参数,要么 加下面的几行代码。(不过,也不是所有的都能这么解决,现在又碰到更诡异的横竖屏混乱。)

升级到 xcode4.5 mac10.8以后,原先正常的工程跑起来后横竖屏乱掉了。找了好久总算解决了:
ios5里面的旋转方法ios6里面确实掉不到了,
(比如:willRotateToInterfaceOrientation:duration:, 
             willAnimateRotationToInterfaceOrientation:duration:, 
             didRotateFromInterfaceOrientation: methods)
       但是ios6中还是可以用的。
首先,在app的主界面(也就是自己的主ViewController.m)里面加上 
-(NSUInteger)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskAllButUpsideDown;//这里返回哪个值,就看你想支持那几个方向了。这里必须和后面plist文件里面的一致(我感觉是这样的)。
}

- (BOOL)shouldAutorotate {
    return YES;//支持转屏
}
这两个函数。

然后在plist文件里面找到Supported interface orientations (iPad)选项,添加你想支持的方向,都有提示的


——————————————————————————————————————————————————————————

如何实现ios屏幕的横竖屏自适应


首先在UIViewController的
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation
方法中设置设备要支持的deviceOrientation;
在UIViewController的
-(void)willRotateToInterfaceOrientation(UIInterfaceOrientation) toInterfaceOrientation 
duration:(NSTimeInterval) duration
或者
-(void)willAnimateRotationToInterfaceOrientation(UIInterfaceOrientation) interfaceOrientation
duration:(NSTimeInterval) duration
重新设置所有子view的frame
 
当UIView设置成自动适配屏幕(即myView.autoresizesSubviews = YES)时,当我们重新设置myView的frame时(一般屏幕旋转时我们都会重新设置view的frame),会自动调用layoutSubviers方法,我们可以在该方法中判断屏幕的方向,并调整各子view的frame。
 
如果工层中有一个superViewController,然后在该控制器的试图上加上了另一个subViewController的view,无论如何subViewController的以上三个方法都不会被调用,这个时候,可以在superViewController的
-(void)willRotateToInterfaceOrientation(UIInterfaceOrientation) toInterfaceOrientation 
duration:(NSTimeInterval) duration
或者
-(void)willAnimateRotationToInterfaceOrientation(UIInterfaceOrientation) interfaceOrientation
duration:(NSTimeInterval) duration
方法中重新配置subViewController的view。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值