美文网首页
屏幕旋转

屏幕旋转

作者: Hey_ebc3 | 来源:发表于2019-08-17 13:47 被阅读0次

    在创建的vc中

     //指定能够支持的orientation有哪些

    -(UIInterfaceOrientationMask)supportedInterfaceOrientations{

        //默认的情况下是maskAllButUpSideDown

        return UIInterfaceOrientationMaskAll;

    }

    //解决statusBar在翻转过程消失

    -(BOOL)prefersStatusBarHidden{

        return NO;

    }

    //强制旋转方法一 不会改变statusbar

      self.view.transform=CGAffineTransformMakeRotation(M_PI_2);

    //强制旋转方法二 设置固定值

      NSNumber* value=[NSNumber numberWithInteger:UIDeviceOrientationPortrait];

       [[UIDevice currentDevice]setValue:value forKey:@"orentation"];

    设备或interface旋转的通知

    //添加observer来观察通知, selector需要自己实现, name是系统封装好的通知

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(DeviceOrientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];

    //Interface通知 UIApplicationStatusBar很形象 状态栏的方向改变

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(InterfaceOritationChanged:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];

    //键盘相关

     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(KeybordDidShow:) name:UIKeyboardDidShowNotification object:nil];

    屏幕发生旋转时改变布局

    -(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator{

        //第一个block表示正在旋转中 第二个block就是选装结束了

        [coordinatoranimateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext>  _Nonnull context) {

            if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation))

            {//do layout}

            else{//do layout}

            }completion:^(id<UIViewControllerTransitionCoordinatorContext>  _Nonnull context) {

            NSLog(@"screen boundes %@",NSStringFromCGRect(self.view.bounds));

        }];

        //需要调用super的默认方法 要不就不向子类传递了

        [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    }

    //同样的事情也可以在-(void)viewDidLayoutSubviews来做

    -(void)viewDidLayoutSubviews{

         if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation))        {//do layout}        else{//do layout}

    }

    相关文章

      网友评论

          本文标题:屏幕旋转

          本文链接:https://www.haomeiwen.com/subject/ivghsctx.html