过去,我曾使用LayoutAnimation.scaleXY
以很高的帧率对flex
的{{1}}进行动画处理。现在,我想使用View
为Animated
设置动画并获得相似的高帧频。
我知道我无法使用flex
为useNativeDriver: true
设置动画。
flex
是否总是在本地运行动画?如果是这样,它如何运行LayoutAnimation
动画,而flex
与Animated
不能运行?
有没有解决的办法?我想将我的useNativeDriver: true
动画与许多其他动画(例如flex
,opacity
和translate
)并行运行,而没有scale
的动画则显得不稳定
P.S。我的问题是针对useNativeDriver: true
的,但是flex
和/或height
是否有显着差异?
答案 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
始终是父容器的一部分(例如,两个flex
,View
包裹在父{{1 }}各自在flex: 1
方向上占据1/2长度。