返回顶部
首页 > 资讯 > 移动开发 >iOS实现手动和自动屏幕旋转
  • 189
分享到

iOS实现手动和自动屏幕旋转

2024-04-02 19:04:59 189人浏览 独家记忆
摘要

本文实例为大家分享了iOS实现手动和自动屏幕旋转的具体代码,供大家参考,具体内容如下 首先iPhone中屏幕分为状态栏方向和设备方向 typedef NS_ENUM(NSIntege

本文实例为大家分享了iOS实现手动和自动屏幕旋转的具体代码,供大家参考,具体内容如下

首先iPhone中屏幕分为状态栏方向和设备方向

typedef NS_ENUM(NSInteger, UIDeviceOrientation) {
    UIDeviceOrientationUnknown,
    UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom
    UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top
    UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right
    UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left
    UIDeviceOrientationFaceUp,              // Device oriented flat, face up
    UIDeviceOrientationFaceDown             // Device oriented flat, face down
};

typedef NS_ENUM(NSInteger, UIInterfaceOrientation) {
    UIInterfaceOrientationUnknown            = UIDeviceOrientationUnknown,
    UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
    UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
    UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft
};

系统提供两个地方来设置设备的方向,取两个地方的交集是最后的设备所支持的方向

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window;
-(NSUInteger)supportedInterfaceOrientations;

这里需要注意的是返回的时下面的枚举

typedef NS_OPTIONS(NSUInteger, UIInterfaceOrientationMask) {
    UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait),
    UIInterfaceOrientationMaskLandscapeLeft = (1 << UIInterfaceOrientationLandscapeLeft),
    UIInterfaceOrientationMaskLandscapeRight = (1 << UIInterfaceOrientationLandscapeRight),
    UIInterfaceOrientationMaskPortraitUpsideDown = (1 << UIInterfaceOrientationPortraitUpsideDown),
    UIInterfaceOrientationMaskLandscape = (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight),
    UIInterfaceOrientationMaskAll = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown),
    UIInterfaceOrientationMaskAllButUpsideDown = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight),
};

在转动屏幕的时候会触发下面方法

-(BOOL)shouldAutorotate;

在该方法返回真,自动调用上面的两个方法得到方向。

修改状态栏方向的方法

1、使用私有api setOrientation;
2、修改状态栏的方向,并通过设置View的transfORM来达到伪旋转的结果,但是设备方向并没有改变
3、主动出发系统支持的方法,就相当于让这个vc在重新出来的时候系统判断所支持的方向的机制重新走一遍。

- (void)awakeSupportInterOrtation:(UIViewController *)showVC completion:(void(^)(void))block
{
    UIViewController *vc = [[UIViewController alloc] init];
    void(^completion)() = ^() {
        [showVC dismissViewControllerAnimated:NO completion:^{
            if (block)
            {
                block();
            }
        }];
    };

    // This check is needed if you need to support iOS version older than 7.0
    BOOL canUseTransitionCoordinator = [showVC respondsToSelector:@selector(transitionCoordinator)];

    if (canUseTransitionCoordinator)
    {
        [showVC presentViewController:vc animated:NO completion:nil];
        [showVC.transitionCoordinator animateAlongsideTransition:nil completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {
            completion();
        }];
    }
    else
    {
        [showVC presentViewController:vc animated:NO completion:completion];
    }
}

-(NSUInteger)supportedInterfaceOrientations
{
        return UIInterfaceOrientationMaskPortrait;
}

-(BOOL)shouldAutorotate
{
    return YES;
}

在需要转为竖屏的时候调用一个方法,在后面两个方法中如上实现,第二个方法中返回的是你最终要转向的方向。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: iOS实现手动和自动屏幕旋转

本文链接: https://lsjlt.com/news/164774.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • iOS实现手动和自动屏幕旋转
    本文实例为大家分享了iOS实现手动和自动屏幕旋转的具体代码,供大家参考,具体内容如下 首先iPhone中屏幕分为状态栏方向和设备方向 typedef NS_ENUM(NSIntege...
    99+
    2024-04-02
  • Win8系统屏幕不能自动旋转怎么办?实现屏幕自动旋转的办法
      Win8平板带有重力感应传感器,在右侧工具栏(CharmBar)中的设置中可以进行转屏操作,如下图所示:   不少用户发现侧边栏中这项功能不见了,只能调节亮度,重力感应也不能自动转屏了,如下图所示: ...
    99+
    2022-06-04
    屏幕 办法 系统
  • Win8不能自动旋转屏幕怎么解决
    本篇内容主要讲解“Win8不能自动旋转屏幕怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Win8不能自动旋转屏幕怎么解决”吧!解决方法:一、在右侧边栏中搜索Services,启动Serv...
    99+
    2023-06-28
  • 配置iOS 16 屏幕旋转适配实例详解
    目录正文一. AppDelegate 配置定义一个 bool 类型的变量二. 适配 iOS16 旋转屏幕三. 强制旋转屏幕四. 自动旋转正文 我们公司的 app 只支持竖屏, 只有在...
    99+
    2024-04-02
  • Android实现屏幕旋转方法总结
    本文实例总结了Android实现屏幕旋转方法。分享给大家供大家参考。具体如下: 在介绍之前,我们需要先了解默认情况下android屏幕旋转的机制: 默认情况下,当用户手机的重力...
    99+
    2022-06-06
    屏幕旋转 方法 Android
  • Android实现旋转动画
    本文实例为大家分享了Android实现旋转动画的具体代码,供大家参考,具体内容如下 旋转动画(可加速、减速) 1、准备工作 首先需要有一个用于旋转的图片 需要考虑如何开始、结束、加速...
    99+
    2024-04-02
  • iOS基于CATransition实现翻页、旋转等动画效果
    基于CATransition实现翻页、旋转、淡化、推进、滑入滑出、立方体、吮吸、波纹等动画效果。 首先看一下效果图: 下面贴上代码: #import <UIKit/UIK...
    99+
    2022-06-05
    iOS 翻页 旋转
  • Android 12.0 系统设置显示主菜单添加屏幕旋转菜单实现旋转屏幕功能
    1.前言  在android12.0的系统rom定制化开发中,在对系统设置进行定制开发中,有产品需求要求增加 旋转屏幕功能的菜单,就是在点击旋转屏幕菜单后弹窗显示旋转0度,旋转 90度,旋转180度, 旋转270度针对不同分辨率的无重力感应...
    99+
    2023-09-17
    android framework 系统设置旋转屏幕 旋转屏幕api 旋转屏幕
  • html中怎么实现自动旋转90度
    今天小编给大家分享一下html中怎么实现自动旋转90度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2024-04-02
  • 如何实现网页宽度自动适应手机屏幕宽度
    这篇文章主要介绍“如何实现网页宽度自动适应手机屏幕宽度”,在日常操作中,相信很多人在如何实现网页宽度自动适应手机屏幕宽度问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现网页宽度自动适应手机屏幕宽度”的疑...
    99+
    2023-06-08
  • CSS动画教程:手把手教你实现旋转特效
    引言:CSS动画是现代网页设计的重要组成部分之一,通过CSS动画可以为网页增加交互性和视觉吸引力。本文将教你如何使用CSS实现一个简单而漂亮的旋转特效,通过简单的代码示例,让你轻松掌握该技巧。创建HTML结构:首先,我们需要创建一个HTML...
    99+
    2023-10-21
    CSS动画 手把手教 旋转特效
  • Android实现屏幕旋转四个方向准确监听
    在做相机开发时,遇到一个问题,就是需要监听屏幕旋转。最简单的就是使用onConfigurationChanged()和OrientationEventListener这两种方法来实现...
    99+
    2024-04-02
  • vue实现旋转木马动画
    本文实例为大家分享了vue实现旋转木马动画的具体代码,供大家参考,具体内容如下 图片数量可为任意值都能正常处理 [1-无限个]: <!DOCTYPE html> &l...
    99+
    2024-04-02
  • CSS如何实现旋转动画
    这篇文章主要讲解了“CSS如何实现旋转动画”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS如何实现旋转动画”吧!   沿X轴方向旋转   在代码中指...
    99+
    2024-04-02
  • Android如何实现旋转动画
    本篇内容主要讲解“Android如何实现旋转动画”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android如何实现旋转动画”吧!1、准备工作首先需要有一个用于旋转的图片需要考虑如何开始、结束、...
    99+
    2023-06-26
  • Android实现简单旋转动画
    本文实例为大家分享了Android实现简单旋转动画的具体代码,供大家参考,具体内容如下 核心方法 public void startAnimation(Animation anima...
    99+
    2024-04-02
  • Python和Appium中swipe()滑动屏幕怎么实现
    在Python中使用Appium进行滑动屏幕操作,可以通过以下代码实现: from appium import webdriver ...
    99+
    2023-10-23
    Python Appium
  • 怎么用纯css3实现的发光屏幕旋转特效
    这篇文章主要讲解了“怎么用纯css3实现的发光屏幕旋转特效”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用纯css3实现的发光屏幕旋转特效”吧!  今天...
    99+
    2024-04-02
  • 在Linux上怎么实现自动调整屏幕亮度
    本篇内容主要讲解“在Linux上怎么实现自动调整屏幕亮度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在Linux上怎么实现自动调整屏幕亮度”吧!当你开始在计算机前花费大量时间的时候,问题自然开...
    99+
    2023-06-16
  • 如何实现HTML5 Canvas旋转动画
    本篇内容介绍了“如何实现HTML5 Canvas旋转动画”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作