我在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
这个问题似乎已经很老了,但除了一些非常糟糕的黑客外,我还没有找到任何解决方案。
那里有干净的解决方案吗?或者我只需要在Resources文件夹中添加我的所有图像而不是资产目录?
答案 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
文件夹中,它们显然效果很好,但似乎并不适用于所有情况。