当前位置:   article > 正文

UniApp中如何实现APP页面横竖屏切换?_uniapp横屏竖屏切换

uniapp横屏竖屏切换

前段时间做了一个驾考项目,该项目是使用UniApp搭建的,其中就遇到的一个需求就是横竖屏切换。用横屏来模拟驾照考试。通过查阅文档发现,在UniApp中,要实现横竖屏切换可以由以下步骤来实现。

一、通过配置页面的 manifest.json 文件中设置 app-plus 字段的 flexible属性

要启用横竖屏切换功能,首先需要在 manifest.json 文件中设置 app-plus 字段的 flexible 属性为 true。该属性用于启用 APP 竖屏切换为横屏时自动旋转页面的功能。

示例 manifest.json 文件的配置如下:

  1. {
  2. "app-plus": {
  3. "flexible": true
  4. }
  5. }

二、使用plus.screen.lockOrientation

使用plus.screen.lockOrientation 方法来手动控制页面的横竖屏切换。该方法接受一个字符串参数,用于指定要锁定的屏幕方向。

以下是一个示例代码,演示如何在 UniApp 中实现手动控制页面横竖屏切换:

  1. export default {
  2. mounted() {
  3. // 监听屏幕方向变化
  4. window.addEventListener('orientationchange', this.handleOrientationChange)
  5. },
  6. destroyed() {
  7. // 移除屏幕方向变化的监听
  8. window.removeEventListener('orientationchange', this.handleOrientationChange)
  9. },
  10. methods: {
  11. handleOrientationChange() {
  12. // 横屏
  13. if (window.orientation === 90 || window.orientation === -90) {
  14. this.lockOrientation('landscape')
  15. }
  16. // 竖屏
  17. else {
  18. this.lockOrientation('portrait')
  19. }
  20. },
  21. lockOrientation(orientation) {
  22. if (typeof plus !== 'undefined' && typeof plus.screen !== 'undefined') {
  23. plus.screen.lockOrientation(orientation)
  24. }
  25. }
  26. }
  27. }

三、下面我们通过page1、page2两个页面来实现一个简单的横竖屏切换demo

page1示例:

  1. <template>
  2. <view>
  3. <text>这是竖屏页面1的内容</text>
  4. <button @click="goToPage2">go page2</button>
  5. </view>
  6. </template>
  7. <script>
  8. export default {
  9. methods: {
  10. goToPage2() {
  11. // 锁定横屏方向
  12. if (typeof plus !== 'undefined' && typeof plus.screen !== 'undefined') {
  13. plus.screen.lockOrientation('landscape-primary')
  14. }
  15. // 跳转到 page2 页面
  16. uni.navigateTo({
  17. url: '/pages/page2/index'
  18. })
  19. }
  20. }
  21. }
  22. </script>

page2示例:

  1. <template>
  2. <view class="landscape-layout">
  3. <text>这是横屏页面2的内容</text>
  4. <button @click="goToPage1">go page1</button>
  5. </view>
  6. </template>
  7. <script>
  8. export default {
  9. methods: {
  10. goToPage1() {
  11. // 锁定竖屏方向
  12. if (typeof plus !== 'undefined' && typeof plus.screen !== 'undefined') {
  13. plus.screen.lockOrientation('portrait-primary')
  14. }
  15. // 跳转到 page1 页面
  16. uni.navigateTo({
  17. url: '/pages/page1/index'
  18. })
  19. }
  20. }
  21. }
  22. </script>
  23. <style>
  24. .landscape-layout {
  25. /* 横屏布局样式 */
  26. transform: rotate(90deg);
  27. transform-origin: center;
  28. width: 100vh;
  29. height: 100vw;
  30. overflow: hidden;
  31. position: fixed;
  32. top: 50%;
  33. left: 50%;
  34. margin-top: -50vw;
  35. margin-left: -50vh;
  36. }
  37. </style>

上面代码中,通过调用plus.screen.lockOrientation 方法锁定屏幕方向为 'portrait-primary'(竖屏)或 'landscape-primary'(横屏)。然后,使用 uni.navigateTo 方法进行页面跳转。

经过以上步骤我们就能在UniApp中实现一个简单的横竖屏切换了,希望以上内容能够帮助到你!

此外,若有正在储备面试题(前端、Java、PHP....)的小伙伴,可以存图、扫一扫

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/315478
推荐阅读
相关标签
  

闽ICP备14008679号