uni-app点击返回按钮没有过度动画 很生硬
uni-app点击返回按钮没有过度动画 很生硬
信息类别 | 详情 |
---|---|
产品分类 | uniapp/App |
PC操作系统 | Mac |
操作系统版本 | Monterey 12.3 |
HBuilderX类型 | Alpha |
HBuilderX版本 | 3.4.5 |
手机系统 | iOS |
手机系统版本 | iOS 15 |
手机厂商 | 苹果 |
手机机型 | iphone 12 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
操作步骤:
- Hello uni-app 项目进入任何页面点击返回
预期结果:
- 过度正常
实际结果:
- 过度不正常 闪屏
bug描述:
新建了一个Hello uni-app 项目, 采用IOS真机调试,点击左上返回按钮 一点过度动画也没有,而且还会闪屏。用手势返回还算正常。详见附件视频,视频内前两次操作是滑动返回,后两次是点击左上方返回按钮的效果
视频里前两次操作是手势返回,后两次是点击左上返回按钮
在 uni-app
中,如果你发现点击返回按钮时页面切换没有过渡动画,显得很生硬,可能是因为你没有正确配置页面切换的动画效果。uni-app
默认是支持页面切换动画的,但如果你在某些情况下没有看到动画效果,可以尝试以下几种方法来解决:
1. 检查 pages.json
配置
在 pages.json
中,你可以为每个页面配置 animationType
和 animationDuration
来控制页面切换的动画效果。
{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页",
"animationType": "slide-in-right", // 页面进入动画
"animationDuration": 300 // 动画持续时间
}
},
{
"path": "pages/detail/detail",
"style": {
"navigationBarTitleText": "详情页",
"animationType": "slide-in-left", // 页面进入动画
"animationDuration": 300 // 动画持续时间
}
}
]
}
2. 使用 uni.navigateBack
方法
如果你是通过 uni.navigateBack
方法返回上一页,确保你没有禁用动画效果。uni.navigateBack
默认是带有动画效果的。
uni.navigateBack({
delta: 1, // 返回的页面数
animationType: 'slide-out-right', // 返回动画
animationDuration: 300 // 动画持续时间
});
3. 检查页面栈
如果你在页面栈中直接跳转到某个页面,而不是通过 navigateTo
或 redirectTo
等方法,可能会导致动画效果丢失。确保你使用的是 navigateTo
或 redirectTo
等方法进行页面跳转。
4. 检查平台差异
uni-app
在不同平台上的表现可能会有所不同。例如,在 H5 平台上,页面切换动画可能会受到浏览器的影响。如果你在某个平台上没有看到动画效果,可以尝试在其他平台上测试,或者查阅 uni-app
官方文档中关于该平台的特定配置。
5. 自定义动画
如果你对默认的动画效果不满意,可以通过自定义 CSS 动画来实现更复杂的页面切换效果。你可以在页面进入和离开时,通过 onShow
和 onHide
生命周期钩子来触发自定义动画。
export default {
onShow() {
// 页面显示时触发自定义动画
},
onHide() {
// 页面隐藏时触发自定义动画
}
}
6. 检查是否禁用了动画
在某些情况下,你可能在代码中禁用了页面切换动画。例如,通过 uni.setNavigationBarTitle
方法设置标题时,可能会禁用动画。确保你没有在代码中禁用动画效果。
uni.setNavigationBarTitle({
title: '新标题',
animation: true // 确保动画开启
});