uni-app IOS调用plus.nativeUI.setUIStyle会闪退
uni-app IOS调用plus.nativeUI.setUIStyle会闪退
| 项目信息 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | 10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.99 |
| 手机系统 | iOS |
| 手机系统版本号 | iOS 16 |
| 手机厂商 | 苹果 |
| 手机机型 | iphonex |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
plus.nativeUI.setUIStyle('dark')
plus.nativeUI.setUIStyle('light')
操作步骤:
plus.nativeUI.setUIStyle('dark')
plus.nativeUI.setUIStyle('light')
预期结果:
plus.nativeUI.setUIStyle('dark')
plus.nativeUI.setUIStyle('light')
正常切换
实际结果:
plus.nativeUI.setUIStyle('dark')
plus.nativeUI.setUIStyle('light')
IOS闪退
bug描述:
IOS调用plus.nativeUI.setUIStyle('light')和plus.nativeUI.setUIStyle('dark')会闪退
调用plus.nativeUI.setUIStyle('auto')正常
目前按照https://uniapp.dcloud.net.cn/tutorial/darkmode.html#darkmode该文档进行的配置,
在不调用plus.nativeUI.setUIStyle强制设置light和dark情况下,深色模式使用一切正常,
但是如果调用plus.nativeUI.setUIStyle进行模式切换,IOS上就会闪退
测试了官方提供的“hello-darkmode 示例工程”,同样会出现这样的问题!!!
安卓端正常!!
更多关于uni-app IOS调用plus.nativeUI.setUIStyle会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更新到最新alpha试下
更多关于uni-app IOS调用plus.nativeUI.setUIStyle会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
最新alpha可以
难怪,我更新成3.99后啥也没改就闪退了,原来是这个原因
在使用 uni-app 开发 iOS 应用时,调用 plus.nativeUI.setUIStyle 导致应用闪退,可能是由于以下几个原因:
1. 权限问题
确保在 manifest.json 文件中正确配置了 iOS 的权限。例如:
{
"app-plus": {
"ios": {
"permissions": {
"UIUserNotificationSettings": "YES"
}
}
}
}
2. 参数错误
plus.nativeUI.setUIStyle 方法需要一个字符串参数,指定 UI 风格。通常支持的参数有 "dark" 和 "light"。确保传入的参数是有效的。
plus.nativeUI.setUIStyle("dark"); // 或 "light"
如果传入的参数不正确,可能会导致应用崩溃。
3. 兼容性问题
某些版本的 uni-app 或 HBuilderX 可能存在与 plus.nativeUI.setUIStyle 相关的兼容性问题。尝试更新到最新版本的 uni-app 和 HBuilderX,看看问题是否得到解决。
4. 系统版本问题
plus.nativeUI.setUIStyle 可能在某些 iOS 系统版本上存在兼容性问题。确保你的应用在目标 iOS 版本上进行了充分的测试。
5. 其他代码问题
检查是否有其他代码在调用 plus.nativeUI.setUIStyle 之前或之后导致了问题。例如,是否在调用该方法之前进行了其他可能影响 UI 的操作。
6. 使用 try-catch 捕获异常
为了更详细地了解崩溃的原因,可以在调用 plus.nativeUI.setUIStyle 时使用 try-catch 捕获异常:
try {
plus.nativeUI.setUIStyle("dark"); // 或 "light"
} catch (error) {
console.error("Error setting UI style:", error);
}

