2017-06-01 60 views
1

我在VS 2017中创建了Xamarin Forms项目,并通过添加带有三个选项卡的TabbedPage开始。然后,我将这些图标添加到Android(资源/可绘制)和iOS(资源目录/图标)项目中。尝试使用Xamarin中的iOS项目中资产目录中的图标时发生异常TabbedPage

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

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

那里有清洁的解决方案吗?或者我只需要将所有图像添加到资源文件夹而不是资源目录中?

+0

我相信你可以明确地分配xaml中的源位置。使用平台指定。 – Digitalsa1nt

+0

但是那么Android呢?我想支持这两个平台。 – LetzFlow

+0

使用平台指定,您可以简单地为您的.Forms xaml中的每个平台设置一个平台,只需要一点灵活性即可满足需求。 – Digitalsa1nt

回答

0

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

当我将这些图像放在Resources文件夹中时,它们通常显示在我的TabbedPage上。

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

iOS的 - 在与生成操作资源文件夹放置图片: BundleResource。还应提供图像的视网膜版本 - 分辨率的两倍和三倍,文件扩展名前面的 文件名后缀为@ 2x或@ 3x后缀(例如,[email protected])。

我把我所有的图像放在.xcassets文件夹中,它们显然工作得很好,但它似乎不适用于任何情况。

0

我在这个问题上挣扎过去。如果放置在.xcassets中,标签页面的图标似乎不适用于iOS。 我在Resources文件夹中移动了那些.png文件,并且发挥了魔力。 我想这是Xamarin上的一种错误。

相关问题