尝试使用Xamarin TabbedPage在iOS项目中使用Asset Catalog中的图标时出现异常

时间:2017-06-01 11:15:15

标签: xamarin.ios xamarin.forms asset-catalog tabbedpage

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

当我在Android上启动项目时,它工作正常,但在iOS上我得到一个例外,UIImage无法加载initWithCOntentsOfFile因为TabbedPage返回nil。这实际上是正确的,因为这不是用于访问资产的正确方法。但是调用方法的是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> 看起来很基本。

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

资产目录看起来像这样: iOS Asset Catalog for the Icons

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

那里有干净的解决方案吗?或者我只需要在Resources文件夹中添加我的所有图像而不是资产目录?

2 个答案:

答案 0 :(得分:1)

我在这个问题上过去一直在努力。如果放在.xcassets中,标签页的图标似乎无法在iOS中运行。 我将那些.png文件移到了Resources文件夹中,这就是魔术。 我想这是Xamarin的一种错误。

答案 1 :(得分:0)

同样的错误发生在我身上,我把图像放在iOS上的.xcassets上。

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

official Xamarin documentation about images中,他们说将图像放在Resources文件夹中。

  

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

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