Я использую файл анимации Lottie, основанный на слое изображений, и дизайн был сделан таким образом, что моя анимация находится в центре представления анимации.Я пытаюсь переместить это в нижний левый угол, используя «Transform.Position» в iOS и свойство Transform_Position в Android.
Моя анимация состоит из нескольких слоев верхнего уровня (рука, нога, тело) инесколько слоев (глаза, рот), которые имеют «тело» в качестве родительского слоя.Это прекрасно работает в 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"));
Я не делаю это правильно?Я прочитал всю документацию, но пока не нашел решения.
Любая помощь будет принята с благодарностью.