2017-06-01 8 views
1

Xamarin FormsプロジェクトをVS 2017で作成し、3つのタブを持つTabbedPageを追加して開始しました。その後、アイコンをAndroid(リソース/描画可能)とiOS(資産カタログ/アイコン)プロジェクトに追加しました。Xamarin TabbedPageを使用してiOSプロジェクトでAsset Catalogからアイコンを使用しようとしたときに例外が発生する

私はAndroid上でプロジェクトを開始すると問題なく動作しますが、iOSではinitWithCOntentsOfFileが返されたため、UIImageをロードできないという例外が発生します。実際には正しいですが、これはアセットにアクセスするための正しい方法ではないためです。しかし、それは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の各プラットフォームに1つずつ設定するだけで、必要な場所で柔軟性を少しでも与えることができます。 – Digitalsa1nt

答えて

0

同じエラーが発生していて、iOSの.xcassetsに画像を配置していました。

イメージをResourcesフォルダに配置すると、通常はTabbedPageに表示されました。

official Xamarin documentation about imagesでは、画像をResourcesフォルダに配置すると言われています。

iOS - ビルドアクションでリソースフォルダにイメージを配置します。 BundleResource。画像の網膜版も提供されなければならない - ファイル拡張子の前に ファイル名(例えば、[email protected])に@ 2xまたは@ 3x接尾辞を付けた解像度の2,3倍の解像度。

すべての画像を.xcassetsフォルダに入れても、見た目はうまくいくが、すべての場合に機能しないようだ。

0

私は過去にこの問題について苦労しました。 .xcassetsに配置すると、タブ付きページのアイコンがiOSで動作しないようです。 これらの.pngファイルをResourcesフォルダー内に移動し、それが魔法を作りました。 私はそれがXamarinの一種のバグだと思います。

関連する問題