iOS横竖屏转换问题

首先需要处理根视图 假如是navgationcontroller  写一个类继承与uinavgationcontroller 在这个子类中下以下代码;

#pragma mark - 只能竖屏设置 同时要在nagationtabbarviewcontroller里面做相应的设置


- (BOOL)shouldAutorotate

{

    return self.topViewController.shouldAutorotate;

}


- (UIInterfaceOrientationMask)supportedInterfaceOrientations

{

    return self.topViewController.supportedInterfaceOrientations;

}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

    return [self.topViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];

}



- (UIStatusBarStyle)preferredStatusBarStyle {

    return self.topViewController.preferredStatusBarStyle;

}

如果根视图为UITabBarController 在tabbar的子类写如下代码

#pragma mark - 只能竖屏设置 同时要在nagationtabbarviewcontroller里面做相应的设置


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

    return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];

}


- (BOOL)shouldAutorotate

{

    return self.selectedViewController.shouldAutorotate;

}



- (UIStatusBarStyle)preferredStatusBarStyle {

    return self.selectedViewController.preferredStatusBarStyle;

}


- (UIInterfaceOrientationMask)supportedInterfaceOrientations

{

    return self.selectedViewController.supportedInterfaceOrientations;

}


跟视图为MMDrawerController 在MMDrawerController 添加下面代码

//6.0之后系统调用该方法

-(BOOL)shouldAutorotate

{

    //返回顶层视图的设置

    if (self.openSide ==0) {

        //centerShow

       UITabBarController *mainTab = ( UITabBarController*)self.centerViewController;

        return  mainTab.selectedViewController.supportedInterfaceOrientations;

    }

    return NO;

}


//6.0之后系统调用该方法

-(NSUInteger)supportedInterfaceOrientations

{

    //返回顶层视图支持的旋转方向

    if (self.openSide ==0) {

        //centerShow

        UITabBarController *mainTab = ( UITabBarController*)self.centerViewController;

        return  mainTab.selectedViewController.supportedInterfaceOrientations;

        

    }else if(self.openSide ==1){

        //leftShow

    }

    return 0;

}

在每个viewcontroller中写以下的代码支持横竖屏:

#pragma mark - 只能竖屏设置 同时要在nagationtabbarviewcontroller里面做相应的设置

-(UIInterfaceOrientationMask)supportedInterfaceOrientations{

    return UIInterfaceOrientationMaskPortrait ;//只支持竖屏

return  UIInterfaceOrientationMaskLandscape;//只支持横屏


}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

    return (interfaceOrientation == UIInterfaceOrientationPortrait);

}


- (BOOL)shouldAutorotate

{

    return YES;

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值