Как использовать SkiaSharp с MvvmCross и Xamarin.Forms для iOS? - PullRequest
0 голосов
/ 30 ноября 2018

В настоящее время я пытаюсь создать приложение для рисования на iOS.Это будет только прототип.Позже я перенесу существующее приложение (на основе MvvmCross) на iOS.Поэтому я настроил проект Xamarin.Forms и включил MvvmCross 6.2.2 Framework в соответствии с TipCalcTutorial .Это отлично работает (я просто собираю его для iOS 12.1 с помощью iPhone Simulator в Visual Studio для Mac).

Но мне не удалось включить SkiaSharp Framework версии 1.6.Я добавил пакет SkiaSharp.Views.Forms из NuGet и интегрировал SKCanvasView в свой XAML (приложение имеет только это представление).

Но когда я запускаю свое приложение, оно не запускается, и я получаю следующее исключение:

NSInternalInconsistencyException Причина: ожидается, что окна приложений будут иметь корневой контроллер представления в конце запуска приложения

Если я закомментирую SKCanvasView, он будет работать.Я провел некоторое исследование, но я не нашел решения для этого.Я мог предположить, что у SkiaSharp есть проблемы с измененной структурой проекта iOS (из-за MvvmCross больше нет ViewController).

Вот мой вид с элементами SkiaSharp:

<views:MvxContentPage x:TypeArguments="viewModels:MainViewModel"
xmlns="http://xamarin.com/schemas/2014/forms" 
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
xmlns:views="clrnamespace:MvvmCross.Forms.Views;assembly=MvvmCross.Forms"
xmlns:mvx="clr-namespace:MvvmCross.Forms.Bindings;assembly=MvvmCross.Forms"
xmlns:viewModels="clr-namespace:FormsPrototype.Core.ViewModels;assembly=FormsPrototype.Core"
xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
x:Class="FormsPrototype.UI.Pages.MainView">

<ContentPage.Content> 
    <Grid x:Name="ContentGrid">
    <Grid.RowDefinitions>
        <RowDefinition Height="1*" />
        <RowDefinition Height="3*"/>
    </Grid.RowDefinitions>

    <StackLayout Orientation="Vertical" Grid.Row="0">
        <Label Text="Xamarin Drawing Prototype" /> 
        <Button Text="Start" Command="{Binding StartSimCmd}" />
   </StackLayout>

     <!-- Canvas-->
   <skia:SKCanvasView Grid.Row="1"  PaintSurface="OnPaintSurface">
   </skia:SKCanvasView> 

 </Grid>
</ContentPage.Content>      

Так можно ли использовать SkiaSharp Framework с Xamarin.Forms и MvvmCross?И как я могу это сделать?

...