react-native:LayoutAnimation和useNativeDriver:对于flex为true

时间:2018-08-27 17:45:31

标签: react-native react-animated layout-animation

过去,我曾使用LayoutAnimation.scaleXY以很高的帧率对flex的{​​{1}}进行动画处理。现在,我想使用ViewAnimated设置动画并获得相似的高帧频。

我知道我无法使用flexuseNativeDriver: true设置动画。

flex是否总是在本地运行动画?如果是这样,它如何运行LayoutAnimation动画,而flexAnimated不能运行?

有没有解决的办法?我想将我的useNativeDriver: true动画与许多其他动画(例如flexopacitytranslate)并行运行,而没有scale的动画则显得不稳定

P.S。我的问题是针对useNativeDriver: true的,但是flex和/或height是否有显着差异?

1 个答案:

答案 0 :(得分:2)

根据this article,“ LayoutAnimation的工作原理是通过视图的唯一键识别视图,计算视图的预期位置,并依靠基础本机框架(iOS上的CoreAnimation)为更改添加动画效果。”,因此{{ 1}}总是在本地运行动画。

Apple docs中,有两个动画框架,即UIKit和Core Animation(对于Android而言可能相似),Core Animation比UIKit更强大。

因此,如果我不得不猜测,LayoutAnimation可以为LayoutAnimation设置动画,而flex则不能,因为Animated使用Core Animation而LayoutAnimation使用UIKit。

Animated与高度/宽度不同,因为flex始终是父容器的一部分(例如,两个flexView包裹在父{{1 }}各自在flex: 1方向上占据1/2长度。