美文网首页
iOS push横屏小记(强制横屏)

iOS push横屏小记(强制横屏)

作者: Steven_2016 | 来源:发表于2018-07-02 19:30 被阅读53次

        present 横屏逻辑很简单,但是有一个问题,在present新VC时,原VC导航栏会向上抖动,看起来效果不太好。于是一直希望能够通过push来避免这个抖动。

为了实现这个效果,尝试了两种方式:

方式一:假push ,实则依然使用present 来推出新VC ,方法也很简单,修改present动画就好。

       CATransition *animation =[CATransition animation];

        [animation setDuration:0.3];

        [animation setType:kCATransitionMoveIn];

       [animation setSubtype:kCATransitionFromBottom];

        [[[[UIApplication sharedApplication]keyWindow]layer]addAnimation:animation forKey:nil];

        [self presentViewController:nav animated:NO completion:nil];

不过这个过程中,会导致present过程中底部出现黑屏.

方式二:真push,在push的同时,强制旋转屏幕。

 ViewController2  *dancingStepVC = [[ViewController2 alloc] init];

    [self orientationToPortrait:UIInterfaceOrientationLandscapeLeft];

    [self.navigationController pushViewController:dancingStepVC animated:YES];

最终方式二完美实现了想要的效果。

注意:如果app本身就支持各个方向的旋转,那么orientationToPortrait 方法使用起来很方便。

不过,通常app都是默认竖屏的。虽然在工程设置里,可能设置了支持某个方向的横屏:

工支持的屏幕旋转样式

但是,想要设置某个页面的指定屏幕方向,还需要对以下三个参数进行设定:

1、app 支持的旋转旋转方向;

appdelegate.m

-(UIInterfaceOrientationMask)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window 

2、屏幕旋转页面的旋转方向

3、返回上一级页面时上一级页面原来的旋转方向

对于1,很好解决,在appdelegate.h 里设定一个Bool类型的标志位allowRotation,用来动态控制app支持的旋转方向

比如,常规页面下,仅仅支持竖屏,则allowRotation = YES;return 支持的旋转方向仅为:

UIInterfaceOrientationMaskLandscapeLeft

在非常规页面下,allowRotation = NO ;支持旋转方向 UIInterfaceOrientationMaskPortrait

对于2,3也很简单,就是对orientationToPortrait方法传参。

说了这么多,直接上干货:demo地址

如果喜欢,请简书点击喜欢,如果觉着demo有用,欢迎star哦~

支付宝扫码领红包,小伙伴们,来来来,扫一扫,说不定领完红包支付的时候就多个鸡腿呢~

领红包

相关文章

  • iOS push横屏小记(强制横屏)

    present 横屏逻辑很简单,但是有一个问题,在present新VC时,原VC导航栏会向上抖动,看起来效...

  • iOS 强制横屏(Push和模态)

    # iOS 强制横屏(Push和模态) iOS开发过程中,有时候需要页面强制横屏。 下面这种方法是不管手机有没有开...

  • iOS强制横屏

    iOS强制横屏

  • 横竖屏

    需求: 让push的ViewController界面强制横屏 一、配置 二、添加强制横屏方法 pragma mar...

  • iOS强制横屏

    朋友给的场景,一个vc present一个nav包着一个vc,这个被present出来的vc要求横屏,dismi...

  • iOS强制横屏

    前言 最近在项目中有一个需求,就是进入某一个页面时要强制横屏,其他界面不做限制,查了资料发现有些方法对我的需求只有...

  • iOS 强制横屏

    NSNumber *orienTarget=[NSNumber numberWithInt: UIInterfac...

  • iOS强制横屏

    项目有一个需求:项目中某一个视图控制器需要强制横屏(或竖屏),并且不能转屏;其他的控制器横竖屏都可以。查了很多资料...

  • iOS强制横屏

    1.http://www.cnblogs.com/block123/p/5917770.html 2.http:/...

  • ios强制横屏

    在强制横屏的页面重新加载init方法:(ios8后会隐藏状态栏) ios8 以后横屏状态栏不显示 解决方法:

网友评论

      本文标题:iOS push横屏小记(强制横屏)

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