路由器在 Ionic 上导航,并在 ios 上使用角度动画闪烁动画

2024-05-04

我正在使用 @angular/animations 在 Ionic (v4) 上的两个页面之间设置页面转换,这一切在 chrome 上都很好用,但在 safari 上却不行。

在一个只有两个页面(热切加载)的简单应用程序上,我仍然遇到问题,与我尝试设置动画的属性无关。如果我创建一个空动画,闪烁只会消失,但这不是目标。另外,我正在使用急切加载。

动画.ts

 export const fadeIn =
    trigger('fadeIn', [
      state('entering', style({ //styles to be transitioned
        opacity: 1,

      })),
      transition("* => entering", [ //this styles will enter before the animation starts
          style({
            opacity: 0,
            display: block
          }),
          animate('500ms')
      ]),

      state('leaving', style({  //this styles will enter when the animation ends
        opacity: 0,
        display: none
      })),
      transition("* => leaving", [ //styles to be transitioned
        animate('220ms', style({
          opacity: 0,
        }))
      ]),

page1.ts

... 
anim = ''
import { fadeIn } from '../animations/animations'
import { Router } from '@angular/router'
...
@Component({
  selector: 'page-1',
  templateUrl: './page1.html',
  styleUrls: ['./page1.scss'],
  animations: [ fadeIn ]
})

constructor(private router: Router){ }

ionViewWillEnter(){
  this.anim = 'entering'
}

nextPage(){
  this.router.navigate(['/page2'])
}

page2.ts

... 
import { fadeIn } from '../animations/animations'
import { Router } from '@angular/router'
...
anim = ''
@Component({
  selector: 'page-2',
  templateUrl: './page2.html',
  styleUrls: ['./page2.scss'],
  animations: [ fadeIn ]
})

constructor(private router: Router){ }

ionViewWillEnter(){
  this.anim = 'entering'
}

previousPage(){
  this.anim = 'leaving'
  setTimeout(() => {
    this.router.navigate(['/page1'])
  }, 200) //220 is the actual time to the transition end, but 200 to make sure that the blinking is not by an 'empty animation state'
}

第1页.html

<ion-content [@fadeIn]='anim'>
  <h1> This is the first page!
</ion-content>

page2.html

<ion-content [@fadeIn]='anim'>
  <h1> This is the second page!
</ion-content>

page1.scss 和 page2.scss

ion-content{
  display: none;
  opacity: 0;
}

全局.scss

@import "~@ionic/angular/css/core.css";
html > body > app-root > ion-app > ion-router-outlet > .ion-page-hidden {
  display: flex !important;
}
...

为了更好地说明问题,我以慢动作录制并上传到Giphy https://giphy.com/gifs/Zb6YrET2x2jaRy2bZm

我期望的结果与我在 Safari 上的 chrome 上得到的结果相同,即使用这种动画结构而不在页面之间闪烁


我会添加这个答案,因为评论有点长。正如我们在评论中讨论的,问题是因为您的动画与默认动画冲突iOS页面过渡动画 https://github.com/ionic-team/ionic/blob/master/core/src/utils/transition/ios.transition.ts

解决此问题的推荐方法是创建您自己的页面过渡动画如你看到的在这个答案中 https://stackoverflow.com/a/56183114/3915438。这样做将应用您的自定义动画覆盖所有默认的“动画”ion-nav and ion-router-outlet 贯穿整个应用程序.

如果由于某种原因你只想在每个页面上使用 Angular 动画 - 就像你在代码中使用类似的东西

<ion-content [@fadeIn]='anim'> 
  ...
</ion-content>

您可以通过以下方式禁用 Ionic 的默认页面过渡动画配置 https://ionicframework.com/docs/utilities/config#config-options:

animated: 布尔值 |如果为 true,Ionic 将启用应用程序中的所有动画和过渡。

@NgModule({
  // ...
  imports: [
    // ...
    IonicModule.forRoot({
      animated: false
    }),
  ],
  //...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路由器在 Ionic 上导航,并在 ios 上使用角度动画闪烁动画 的相关文章

随机推荐

  • Android 设备有方形屏幕吗?

    我正在为 Android 编写一个游戏 我自己布局游戏屏幕 处理垂直和水平方向 如果宽度和高度相同 则没有做任何事情 有人知道至少有一款 Android 设备具有完美的方形屏幕分辨率吗 The MotoACTV https motoactv
  • Keras 中的 model.fit() 和 model.evaluate() 有什么区别?

    我使用 Keras 和 TensorFlow 后端来训练 CNN 模型 之间是什么model fit and model evaluate 我应该最好使用哪一种 我在用model fit 截至目前 我知道的用处model fit and m
  • 在猫鼬的整个应用程序中共享数据库连接

    使用最新的 mongoose 更新 您不能再像我以前那样进行用户建模 我需要在整个应用程序中共享相同的数据库连接 https github com LearnBoost mongoose issues 1249 https github c
  • 按位置对 MultiIndex pandas DataFrame 进行切片

    我目前正在尝试按位置对具有三个级别的多索引数据帧进行切片 我正在使用熊猫 19 1 Level0 Level1 Level2 Value 03 00368 A Item111 6 9 03 00368 A Item333 19 2 03 0
  • d3.js 中拖动后(有时)单击事件未触发

    观察到的行为 我正在使用 d3 js 并且我想根据以下情况更新一些数据drag https github com mbostock d3 wiki Drag Behavior wiki on事件 并重绘事件之后的所有内容dragend ht
  • iOS:不明确的属性合成行为。继承相关

    我在用着AppCode它标记了一个非常大的项目代码中的一个有趣的情况 预ARC 子类定义并合成一个称为委托的属性 实际上属性声明已经被注释掉了 但是 synthesize delegate delegate 声明被留下了 该代码可以编译 大
  • 当调用带有警告“控制到达非空函数末尾”的函数时(实际上)会发生什么?

    我知道这条消息的含义 我只是想知道为什么会这样not一条错误消息 但只是一个警告 在这种情况下会发生什么 例如 假设我有一个函数 int f 当我调用它时会发生什么 编译器是否添加了 未初始化 的返回int在这种情况下 或者丢失的返回可能会
  • SQL WHERE 语句?

    如果我想返回 A 列为 null 或 B 列为 null 的行 但不返回两者都为 null 的行 那么我的 WHERE 子句应该在 SQL 语句中是什么 WHERE ColA is NULL AND ColB is NOT NULL OR
  • 如何从不同 JVM 中的独立 java 程序调用 EJB

    我使用具有 glassfish 服务器的 NETbeans IDE 开发了 EJB 我可以从独立的java调用它 只要这个java项目是在NETbeans下开发并在相同的JRE下运行的 但我需要找出如何在不同的 jre 中运行它 我在这方面
  • Iron 路由器中的多个订阅

    我一直在开发一个使用评论功能的应用程序 这导致必须订阅发表评论的集合和评论集合本身 现在看起来像这样
  • Facebook 页面插件无法运行 - 仅适用于一个网站

    我已将页面插件集成到我的目录中 ruhrlink de info php schluessel 150991 不起作用 其他的可以 当我在开发者网站 gt 页面插件中手动输入网址时 它在那里也不起作用 https www facebook
  • QMainWindow::showMaximized() 不更新大小

    我正在尝试创建一个QMainWindow封装一个QGraphicsView我把它放进去 我希望它一开始就最大化 所以我这样做 QMainWindow mainWindow new QMainWindow mainWindow gt setW
  • 使用常量 NSString 作为 NSUserDefaults 的键

    我正在使用 NSUSerDefaults 来存储用户首选项 我记得在某处读到过 将键设置为常量是一个好主意 我同意 以下代码是我目前拥有的 NSUserDefaults standardUserDefaults setObject NSNu
  • AVAudioRecorder 未写出正确的 WAV 文件头

    我正在 iPhone 上开发一个项目 我使用 AVAudioRecorder 从设备麦克风录制音频 然后对录音进行操作 为了确保我正确地从文件中读取样本 我使用 python 的 wave 模块来查看它是否返回相同的样本 然而 当尝试打开
  • 错误:从内部类内部访问局部变量 a;需要宣布最终

    class Outer void m1 int a 12 class Inner void show System out println a new Inner show 在这里 当我编译此代码时 我收到错误 即局部变量 a 是从内部类中
  • Android 模拟器 x86 HAXM GPU Windows 7 崩溃 BSOD

    我不懂英语 但我会尽力解释 我使用最新版本的 Android SDK 从 AVD Manager 模拟器 intel x86 和 intel HAXM 运行 它工作正常 但是当我启用主机 GPU 时 Windows 7 崩溃 BSOD 这种
  • 确定非空列表条目是否“连续”的 Pythonic 方法

    我正在寻找一种方法来轻松确定列表中所有非 None 项目是否出现在单个连续切片中 我将使用整数作为非 None 项目的示例 例如 列表 None None 1 2 3 None None 满足我对连续整数条目的要求 相比之下 1 2 Non
  • 推进并离开加入

    在教义中我可以 q Doctrine Query create gt from One o gt where t text aaa gt andWhere h text bbb gt leftJoin o Two t gt leftJoin
  • 如何在 VBA 中克隆范围对象

    我正在使用 Excel Visual Basic 编辑器在 VBA 中编写 Excel 宏 我不知道如何复制 克隆范围对象 而不是创建对同一对象的第二个引用 MemberwiseClone 函数似乎不可用 我认为它将针对内置类型实现 我需要
  • 路由器在 Ionic 上导航,并在 ios 上使用角度动画闪烁动画

    我正在使用 angular animations 在 Ionic v4 上的两个页面之间设置页面转换 这一切在 chrome 上都很好用 但在 safari 上却不行 在一个只有两个页面 热切加载 的简单应用程序上 我仍然遇到问题 与我尝试