Исключение при попытке использовать значки из каталога активов в проекте iOS с Xamarin TabbedPage

Я создаю проект Xamarin Forms в VS 2017 и начал с добавления TabbedPage с тремя вкладками. Затем я добавил иконки в проекты Android (в разделе Ресурсы / Drawable) и iOS (Каталоги / Иконки).

Когда я запускаю проект на Android, он работает нормально, но на iOS я получаю исключение, что UIImage не может быть загружен, потому что initWithCOntentsOfFile вернул ноль. Что на самом деле правильно, потому что это не правильный метод для доступа к активам. Но это TabbedPage вызов метода, поэтому я ничего не могу с этим поделать.

TabbetPage выглядит довольно просто.

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:local="clr-namespace:GreenThumb"
            x:Class="GreenThumb.MainPage">
    <NavigationPage Title="Today" Icon="current.png">
        <x:Arguments>
            <local:Current />
        </x:Arguments>
    </NavigationPage>
    <NavigationPage Title="Overview" Icon="overview.png">
        <x:Arguments>
            <local:Overview />
        </x:Arguments>
    </NavigationPage>
    <NavigationPage Title="Settings" Icon="settings.png">
        <x:Arguments>
            <local:Settings />
        </x:Arguments>
    </NavigationPage>
</TabbedPage>

И каталог активов выглядит так: Каталог активов iOS для иконок

Эта проблема, кажется, довольно старая, но я не нашел никаких решений, кроме некоторых очень грязных хаков.

Есть ли чистое решение там? Или мне просто нужно добавить все мои изображения в папку ресурсов вместо каталогов активов?

2 ответа

Я боролся в прошлом по этому вопросу. Кажется, что иконки для страниц с вкладками не работают в iOS, если они помещены в.xcassets. Я переместил эти файлы.png в папку "Ресурсы", и в этом была магия. Я полагаю, это что-то вроде ошибки на Xamarin.

Та же самая ошибка произошла со мной, и я помещал изображения на .xcassets на iOS.

Когда я помещал изображения в папку "Ресурсы", они нормально отображались на моей вкладке.

В официальной документации Xamarin об изображениях говорится, что они помещают изображения в папку "Ресурсы".

iOS - Поместите изображения в папку "Ресурсы" с помощью Build Action: BundleResource. Также должны быть предоставлены версии изображения Retina - в два и три раза больше разрешения с суффиксами @2x или @3x к имени файла перед расширением файла (например, myimage@2x.png).

Я помещаю все свои изображения в .xcassets папки, они, видимо, работают хорошо, но, похоже, не работает на каждый случай.

Другие вопросы по тегам