ReactNative进阶(三十六):iPad横屏适配

这篇具有很好参考价值的文章主要介绍了ReactNative进阶(三十六):iPad横屏适配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

应用RN技术栈实现APP上线后,业务部门领导会上反馈未实现ipad横屏全屏展示,用户体验较差。由此,一场pad横屏全屏展示的APP调优工作由此开展。

二、实现思路

时间紧任务重,技术实现上,考虑到存量功能代码改造工作量,RN层面对于横屏改造工作量较大,故RN层面整体实现横屏展示时间上不允许,RN侧改造方案放弃。

由于业务方只关注APP某一功能模块,故将改造范围缩减,当业务方点击APP功能模块入口时,允许APP解除屏幕方向锁定,让屏幕方向根据设备的物理方向自动调整。当应用退出当前关注功能模块时,APP屏幕方向锁定,不允许屏幕方向根据设备的物理方向自动调整。

实现代码如下:
安装步骤:

npm i --save react-native-orientation
react-native link react-native-orientation (自动link不成功,建议手动link)

进入功能模块时,

import Orientation from 'react-native-orientation';

onPress={() => {
  // 解除屏幕方向锁定,让屏幕方向根据设备的物理方向自动调整
  console.log('----------解除屏幕方向锁定,让屏幕方向根据设备的物理方向自动调整---------');
  Orientation.unlockAllOrientations();
  ....
}}

退出功能模块时,

import Orientation from 'react-native-orientation';

initData = () => {
  // 锁定屏幕竖屏锁定
  console.log('----------锁定屏幕竖屏锁定---------');
  Orientation.lockToPortrait();
};

按照以上实现思路实施后,发现android系统下的pad表现较好,能够按照预期设想自动实现APP横竖屏切换,且内容适配。

但是,iOS系统下的iPad表现不尽如人意,虽然可以实现屏幕横竖屏自动切换,但是当APP处于横屏状态下时,页面展示效果存在未完全铺展开的适配问题。

按照网上给出的解决方案:

对于iOS,在ios/Info.plist文件中包括以下行就可以了:

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
</array>

<key>UISupportedInterfaceOrientations~ipad</key>
<array>
    <string>UIInterfaceOrientationLandscapeRight</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>

经实践发现问题依旧存在。

三、延伸阅读

react-native-orientation 组件可用函数如下:

  • lockToPortrait()
  • lockToLandscape()
  • lockToLandscapeLeft()
  • lockToLandscapeRight()
  • unlockAllOrientations()
  • getOrientation(function(err, orientation) 返回的结果有 LANDSCAPEPORTRAITUNKNOWNPORTRAITUPSIDEDOWN
  • getSpecificOrientation(function(err, specificOrientation) 返回的结果有 LANDSCAPE-LEFTLANDSCAPE-RIGHTPORTRAITUNKNOWNPORTRAITUPSIDEDOWN

官方文档中,还有一些事件的介绍,详细可以到官方文档上了解学习。文章来源地址https://www.toymoban.com/news/detail-824181.html

四、拓展阅读

  • 《react-native-orientation 官方文档》

到了这里,关于ReactNative进阶(三十六):iPad横屏适配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • ipad横屏怎么设置方法,如何使ipad横屏

    ipad横屏怎么设置方法,如何使ipad横屏

    具体如下:1.首先打开我们的平板,之后在屏幕上由下往上滑,如图。 请点击输入图片描述请点击输入图片描述2.之后会出现一个菜单设置界面,点击选项右侧的“圆形”按钮,就可以锁定当前屏幕的方向,我们再点击一下就可以取消锁定,如图。 请点击输入图片描述请点击

    2024年02月08日
    浏览(10)
  • 《QT从基础到进阶·三十六》QWidget实现收缩栏的效果

    《QT从基础到进阶·三十六》QWidget实现收缩栏的效果

    功能: 1、可以在收缩栏插件中添加界面 2、可以把界面展开或收缩 3、可以用鼠标拖动界面改变界面的排放顺序 1、可以在收缩栏插件中添加界面 参数1:插入的界面指针 参数2:插入的界面标题 参数3:插入的界面图标 demo: 在收缩栏插件中添加两个界面 2、界面展开或收缩

    2024年02月05日
    浏览(17)
  • ReactNative项目构建分析与思考之native_modules.gradle

    ReactNative项目构建分析与思考之native_modules.gradle

    上一篇文章分析完 react-native-gradle-plugin 后,我们知道了react-native-gradle-plugin 主要是对依赖环境,以及RN的依赖版本进行管理。 本篇文章来接着分析 native_modules.gradle 这个脚本,这个脚本是React Native构建中比较重要的一个角色。 这是一个源码形式的脚本文件,虽然只有一个文件

    2024年03月20日
    浏览(8)
  • android 布局 横屏 android横屏适配

    一、刘海屏适配 1、layoutInDisplayCutoutMode属性 Android 9.0系统中提供了3种layoutInDisplayCutoutMode属性来允许应用自主决定该如何对刘海屏设备进行适配。 LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT 这是一种默认的属性,在不进行明确指定的情况下,系统会自动使用这种属性。这种属性允许应用程

    2024年02月09日
    浏览(6)
  • unity发布WebGl在手机上的横屏适配,webgl横版游戏在手机上直接转横屏

    unity发布WebGl在手机上的横屏适配,webgl横版游戏在手机上直接转横屏

    unity版本2020.1 问题:webgl的横版游戏 1920*1080,在手机上适配的不好,还是竖屏显示, 使用官方的说明,说是只在全屏模式下能旋转,也不好用,可能直接旋转也不会达到理想的效果 解决方案: 1.我这边使用的方案是UI的适配,UGUI,采用的是两套UI,根据不同平台加载不同的资源

    2024年02月02日
    浏览(8)
  • iOS16灵动岛横屏视频播放适配(ZFPlayer)

    iOS16灵动岛横屏视频播放适配(ZFPlayer)

    手机为iphone14Pro 版本iOS16.0.3 Xcode版本14.2 视频播放第三方库ZFPlayer 使用视频时,视频播放自动横屏控制层的返回按钮和暂停按钮都点不到,上图错误、下图正确(控制按钮距离屏幕左右减小50、视频全屏不做改变) 全屏没有考虑灵动岛的范围 ,这里在屏幕旋转时重置控制层

    2023年04月08日
    浏览(5)
  • uniapp小程序横屏后适配问题(解决方案)

    uniapp小程序横屏后适配问题(解决方案)

    问题一: 通常我们在小程序端切换横屏后会出现字体或宽高大小出现适配问题 解决方法 使用vmin来解决适配问题(使用rpx转换vmin) rpx与vmin的换算关系:5rpx 等价 calc(5vmin * 100 / 750)== 简单写==5rpx 等价 calc(5vmin / 7.5) 下面来看下效果(已经实现了哦) 竖屏模式下 横屏模式下 横

    2024年02月13日
    浏览(9)
  • uniapp实现微信小程序横屏适配问题demo效果(整理)

    uniapp实现微信小程序横屏适配问题demo效果(整理)

    使用VMIN进行布局 先了解css3的两个属性vmax和vmin 竖屏布局的时候,750rpx就是竖屏布局屏幕的宽度,vmin不管横竖屏的情况下,100vmin都是手机屏幕的宽度,所以rpx与vmin之间有一个换算的关系:x rpx=( x * 100 / 750)vmin。 也就是说: 75rpx转化为vmin就是 75 * 100/750=10vmin 所以我们将rpx转化

    2024年02月11日
    浏览(11)
  • ReactNative进阶(五十一)project.pbxproj 配置文件详解

    ReactNative进阶(五十一)project.pbxproj 配置文件详解

    Xcode 作为日常开发iOS程序的IDE,支持 C 、 C++ 、 Objective-C 、 Swift 、 Ruby 等语言进行编写。日常开发入口就是 Xcode workspace 或者 Xcode project 。 workspace 是一个 Xcode 文档,它将项目和其他文件、project分组。一个 workspace 可以包含任意数量的 Xcode project ,以及资源文件(JSON、脚本、

    2024年02月04日
    浏览(5)
  • redis基础(三十六)

    redis基础(三十六)

    安装redis、配置redis 目录 一、 概述 (一)NoSQL 1、类型 2、应用场景 (二)Redis 二、安装 (一)编译安装 (二)RPM安装 三、目录结构 四、命令解析 五、redis登录更改 1、发现问题 2、解决办法 六、数据库操作 (一)登录数据库 (二)帮助信息 1、help 命令字 2、tab补齐 (三

    2024年02月14日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包