1

我在 VS 2017 中创建了一个 Xamarin Forms 项目,并从添加一个TabbedPage带有三个选项卡的选项卡开始。然后,我将图标添加到 Android(在 Resources/drawable 中)和 iOS(Asset Catalogs/Icons)项目中。

当我在 Android 上启动该项目时,它工作正常,但在 iOS 上,我得到一个异常,即由于返回 nilUIImage而无法加载。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 资产目录

这个问题似乎很老了,但除了一些非常肮脏的黑客之外,我还没有找到任何解决方案。

那里有干净的解决方案吗?还是我只需将所有图像添加到资源文件夹而不是资产目录中?

4

2 回答 2

1

我过去在这个问题上挣扎过。如果放置在 .xcassets 中,选项卡式页面的图标似乎在 iOS 中不起作用。我将这些 .png 文件移到了 Resources 文件夹中,这很神奇。我想这是 Xamarin 上的一种错误。

于 2018-01-19T15:09:12.943 回答
0

我也发生了同样的错误,我将图像放在.xcassetsiOS 上。

当我将图像放在资源文件夹中时,它们通常会出现在我的 TabbedPage 上。

有关图像的官方 Xamarin 文档中,他们说将图像放在 Resources 文件夹中。

iOS - 使用 Build Action: BundleResource 将图像放置在 Resources 文件夹中。还应提供图像的 Retina 版本 - 分辨率的两倍和三倍,在文件扩展名前的文件名上带有 @2x 或 @3x 后缀(例如 myimage@2x.png)。

我将所有图像都放在.xcassets文件夹中,它们显然效果很好,但似乎并非适用于所有情况。

于 2017-08-16T20:46:26.537 回答