在iOS Lottie中转换父级后,子层无法正确转换

时间:2018-11-22 11:42:24

标签: lottie lottie-ios lottie-xamarin

我正在使用基于图像层的Lottie动画文件,并且设计已经完成,因此我的动画位于“动画视图”的中心。我正在尝试使用iOS中的“ Transform.Position”和Android中的Transform_Position属性将其移至左下角。

我的动画由几层顶层(手,腿,身体)和几层(眼睛,嘴巴)组成,其中“身体”作为父层。这在Android上工作正常,但在iOS中,顶层得到了正确翻译,但子层并未根据父层进行补偿。当我明确尝试抵消它们时,只要没有旋转,它就可以工作。旋转的层的行为非常奇怪。

我正在使用以下方式进行移动,

class PointCallback : LOTPointValueDelegate
{
    public override CGPoint StartKeyframe(nfloat currentFrame, nfloat startKeyframe, nfloat endKeyframe, nfloat interpolatedProgress, CGPoint startPoint, CGPoint endPoint, CGPoint interpolatedPoint)
    {
        CGPoint newPosi = new CGPoint(interpolatedPoint);
        newPosi.X -= 200;
        newPosi.Y += 200;
        return newPosi;
    }
}

_animationView.SetValueDelegate(new PointCallback(), LOTKeypath.KeypathWithString("body1.Transform.Position"));
_animationView.SetValueDelegate(new PointCallback(), LOTKeypath.KeypathWithString("left hand1.Transform.Position"));
_animationView.SetValueDelegate(new PointCallback(), LOTKeypath.KeypathWithString("right hand1.Transform.Position"));
_animationView.SetValueDelegate(new PointCallback(), LOTKeypath.KeypathWithString("acc1.Transform.Position"));
_animationView.SetValueDelegate(new PointCallback(), LOTKeypath.KeypathWithString("mouth1.Transform.Position"));

我做错了吗?我已经阅读了所有文档,但尚未找到解决方案。

任何帮助将不胜感激。

0 个答案:

没有答案