Исключение при попытке использовать значки из каталога активов в проекте 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>
И каталог активов выглядит так:
Эта проблема, кажется, довольно старая, но я не нашел никаких решений, кроме некоторых очень грязных хаков.
Есть ли чистое решение там? Или мне просто нужно добавить все мои изображения в папку ресурсов вместо каталогов активов?
2 ответа
Я боролся в прошлом по этому вопросу. Кажется, что иконки для страниц с вкладками не работают в iOS, если они помещены в.xcassets. Я переместил эти файлы.png в папку "Ресурсы", и в этом была магия. Я полагаю, это что-то вроде ошибки на Xamarin.
Та же самая ошибка произошла со мной, и я помещал изображения на .xcassets
на iOS.
Когда я помещал изображения в папку "Ресурсы", они нормально отображались на моей вкладке.
В официальной документации Xamarin об изображениях говорится, что они помещают изображения в папку "Ресурсы".
iOS - Поместите изображения в папку "Ресурсы" с помощью Build Action: BundleResource. Также должны быть предоставлены версии изображения Retina - в два и три раза больше разрешения с суффиксами @2x или @3x к имени файла перед расширением файла (например, myimage@2x.png).
Я помещаю все свои изображения в .xcassets
папки, они, видимо, работают хорошо, но, похоже, не работает на каждый случай.