После исследования я обнаружил, что большинство анимаций воспроизводятся из AnimationView, созданного с использованием XAML. Брэд Диксон предложил создать ContentView с XAML и создать пользовательское представление для Lottie Animation, которое затем можно было бы вызывать программно без проблем.
После того, как проведенные предварительные тесты показали, что это работает, дальнейшие тесты показали, что основной файл анимации Lottie JSON, который я пытался использовать, не будет работать на iOS (предполагает возможное повреждение).
Похоже, это работает, но на самом деле это не самая оптимальная настройка. Надеюсь, будущая версия Lottie сделает это устаревшим.
AnimatingView.xaml
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="FoodMono.Views.AnimatingView" xmlns:forms="clr-namespace:Lottie.Forms;assembly=Lottie.Forms">
<ContentView.Content>
<forms:AnimationView x:Name="animation" Loop="True" AutoPlay="True" HeightRequest="300" WidthRequest="300" Speed="1" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Animation="5stars.json" />
</ContentView.Content>
</ContentView>
AnimatingView.xaml.cs
public partial class AnimatingView : ContentView
{
string animationName = null;
public AnimatingView(string AnimationName, bool loop=true, bool autostart=true)
{
InitializeComponent();
animationName = AnimationName;
animation.Animation = AnimationName;
if(!loop)
animation.Loop = loop;
if(!autostart)
animation.AutoPlay = autostart;
}
protected override void OnParentSet()
{
Console.WriteLine(animation.IsPlaying);
this.Start();
Console.WriteLine(animation.IsPlaying);
base.OnParentSet();
}
public void Start()
{
animation.Play();
}
public void Stop()
{
animation.AbortAnimation(animationName);
}
}