更新记录

1.0.2(2026-03-29)

修改成异步返回

1.0.1(2026-03-29)

增加获取当前屏幕是竖向时还是横向

1.0.0(2026-03-29)

ios旋转屏幕

查看更多

平台兼容性

uni-app(4.87)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS iOS插件版本 鸿蒙
× × × × × 13 1.0.1 ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.85)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × × 13 × ×

dui-rotate

uni-app x 下通过 UTS 在 App Android / App iOS 动态切换横竖屏的插件(iOS 使用 UTS 原生混编 Swift)。

在页面中引入

import {
  setAppScreenOrientation,
  setLandscape,
  setPortrait,
  setOrientationSensor,
  getScreenOrientation
} from '@/uni_modules/dui-rotate'

类型见 uni_modules/dui-rotate/utssdk/interface.utsSetScreenOrientationOptionsSetScreenOrientationCallbacks 等)。

API(异步回调)

设置朝向均在主线程异步完成,通过 success / fail / complete 获知结果(与常见 uni API 习惯一致)。

方法 说明
setAppScreenOrientation(options) options.mode 必填,可选 successfailcomplete
setLandscape(callbacks?) 固定横屏,回调对象可选
setPortrait(callbacks?) 固定竖屏
setOrientationSensor(callbacks?) 跟随传感器
getScreenOrientation(): string 同步读取当前界面朝向 'portrait' / 'landscape'

SetScreenOrientationOptions

  • modeportraitlandscapereverse-portraitreverse-landscapesensorsensor-portraitsensor-landscapefull-sensorusernosensor
  • success(res)res.errMsg 一般为 'ok'res.mode 为本次请求的 mode
  • fail(err)err.errMsgerr.errCodeerr.mode
  • complete(res):无论成功失败都会调用;参数与 successresfailerr 同结构(需自行用 errCode 等区分)

错误码 errCode

含义
9010001 Android:getUniActivity() 为空
9010002 iOS:requestGeometryUpdate 失败(系统回调错误)

说明:成功表示已提交旋转请求(Android 已调用 setRequestedOrientation;iOS 已走几何更新或 legacy 路径),不保证系统最终动画与硬件状态与预期完全一致。iOS 16+ 在约 120ms 内若未收到几何错误则视为成功。

工程配置(iOS)

pages.jsonglobalStyle 建议 "pageOrientation": "auto",否则 iPhone 可能仅竖屏。详见 启动界面方向

uvue 示例

<script setup lang="uts">
import { setAppScreenOrientation } from '@/uni_modules/dui-rotate'

function lockLandscape() {
  setAppScreenOrientation({
    mode: 'landscape',
    success: (res) => {
      console.log('ok', res.mode, res.errMsg)
    },
    fail: (err) => {
      console.log('fail', err.errCode, err.errMsg)
    },
    complete: (res) => {
      console.log('complete')
    }
  })
}
</script>

参考文档

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。