ios 指定某个页面是横屏还是竖屏

       最近项目中有这种需求,在进入某个界面时可能是横屏也有可能是竖屏,但是项目中大部分界面都是采用竖屏这种情况下就要对这个界面进行单独处理,下面是我的解决方法。

网上搜到的都是这样子的

-(BOOL)shouldAutorotate
{
    returnYES;
}
- (NSUInteger)supportedInterfaceOrientations
{
    returnUIInterfaceOrientationMaskPortrait;
}

shouldAutorotate 意思是是否支持自动旋转 supportedInterfaceOrientations意思是旋转的方向。但是我要处理的这个界面进行这样的操作发现这两个方法根本不起作用,困扰之余通过查找资料终于明白了到底怎么回事。

看看官方文档


通过描述我们可以发现这两个方法需要设置在根视图中,意思是说确实这个页面是否旋转旋转的方向都是要根据根视图的这两个方法来判断,真的很操蛋。好了既然知道了这点下面是我的处理办法。
我在我的 
BaseNavigationController 处理如下:

-(BOOL)shouldAutorotate
{
   returnself.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
   returnself.topViewController.supportedInterfaceOrientations;
}


这段代码的作用就是 对是否旋转和旋转方向都从当前的控制器去取。
在我的 
BaseViewController 处理如下 :

-(BOOL)shouldAutorotate
{
   returnYES;
}
- (NSUInteger)supportedInterfaceOrientations
{
   returnUIInterfaceOrientationMaskPortrait;
}


这样做的目的就是如果一些界面没有使用这两个方法那默认就是竖屏。
通过这样做就可以实现可以单独在某个控制实现单独的横屏和竖屏如:

-(BOOL)shouldAutorotate
{
    returnYES;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscapeRight;
}

这里还多介绍一个方法,比如我们需要点击某个按钮的时候要控制器进行旋转,这个时候就需要进行强制旋转下面两个方法就可以实现:

[[UIDevicecurrentDevice]setValue:[NSNumbernumberWithInteger:UIDeviceOrientationLandscapeLeft]forKey:@"orientation"];
[[selfclass]attemptRotationToDeviceOrientation];






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值