2017-06-01 71 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上的一種錯誤。

相關問題