【问题标题】:Xamarin.Forms iOS images not showingXamarin.Forms iOS 图像未显示
【发布时间】:2019-02-17 10:37:30
【问题描述】:

我有一个 Xamarin.Forms 共享项目。在 Android 上,所有图像都可以正常工作。我想将它们添加到我的 iOS 项目中,但它们没有显示。我已将它们添加到 Assets.xcassets:

{
  "filename": "logo_launcher.png",
  "scale": "1x",
  "idiom": "universal"
}

我使用以下 XAML:

<Image Source="logo_launcher.png" x:Name="logo" />

我已经添加了除矢量图像之外的所有图像。我在 iPhone 8 - 11.4 模拟器上测试它。

虽然它已被弃用,但我尝试将图像添加到“资源”文件夹。但我什至无法选择 .png 文件。所以这也没有用。

我不知道该怎么做。是否需要启用某些选项,或者需要在 XAML 中包含哪些内容才能使其正常工作?

【问题讨论】:

标签: image xaml xamarin.forms xamarin.ios


【解决方案1】:

只需选择 ios 和 right click--&gt;build action--&gt;bundle resource 中资源文件夹中的所有图像。它会起作用的。

【讨论】:

    【解决方案2】:

    也许我使用 Assets.xcassets 找到了possible solution,请检查以下步骤:

    1. Main.xaml

      <Image x:Name="iconBrain">
          <Image.Source>
              <OnPlatform x:TypeArguments="ImageSource">
                  <OnPlatform.iOS><FileImageSource File="IconBrain"/></OnPlatform.iOS>
                  <OnPlatform.Android><FileImageSource File="ic_brain"/></OnPlatform.Android>
              </OnPlatform>
          </Image.Source>
      </Image>
      
    2. Android:在 Resourses 目录下的相应 Drawable 文件夹中添加图片。

    3. iOS:在 Assets.xcassets 下创建一个新的图像集并添加图像。
    4. 完成。没有额外的属性、配置或 xamarin 技巧。

    查看my GitHub 以获得完整的解决方案,我还尝试使用 Xamarin.Forms、共享项目和 iPhone 8 - 11.4 模拟器重现相同的环境。

    另外一点,您不能在 mipmap 目录下添加图像,因为 mipmap 文件夹仅用于放置您的应用程序/启动器图标(显示在主屏幕上)。您使用的任何其他可绘制资源都应像以前一样放在相关的可绘制文件夹中。

    最好将您的应用程序图标放在 mipmap- 文件夹(而不是 drawable- 文件夹)中,因为它们使用的分辨率与设备的当前密度不同。 -Google blogpost

    最后,感谢您提供有关 Apple 已弃用方法的信息。

    在 iOS 9 之前,图像通常通过 Build Action: BundleResource 放置在 Resources 文件夹中。但是,这种在 iOS 应用程序中处理图像的方法已被 Apple 弃用。有关详细信息,请参阅Image Sizes and Filenames。 -Images in Xamarin.Forms

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      检查/重现以下一些步骤:

      1. 检查图像资源上的构建操作,在共享 PCL 中应该是 Embedded Resource,在 Android 中构建操作应该是 AndroidResource,在 iOS 中应该是 BundleResource

      2. 尝试将Copy to output directory设置为Always copy

      3. 删除 bin/obj 文件夹,将构建配置从调试切换到发布,重新构建项目然后返回调试

      4. 尝试从iOS中删除图片,重新构建,重新添加,然后重复上述步骤

      另外,您可以尝试设置ImageSource,如下所示:

      <Image x:Name="logo"> 
          <Image.Source> 
              <OnPlatform x:TypeArguments="ImageSource"> 
                  <On Platform="Android" Value="logo_launcher.png"/>
                  <On Platform="iOS" Value="logo_launcher"/>
              </OnPlatform> 
          </Image.Source> 
      </Image>
      

      希望对你有帮助。

      【讨论】:

      • 有一个变化我只是愚蠢,但我无法在 assets.xcassets 目录上执行第 1 步和第 2 步。其他不成功的步骤。
      • 你不需要使用 assets.Xcassets
      • 是的,我愿意:“在 iOS 9 之前,图像通常使用 Build Action: BundleResource 放置在 Resources 文件夹中。但是,这种在 iOS 应用程序中处理图像的方法已被 Apple 弃用。有关详细信息,请参阅图像大小和文件名。” docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/…
      • 不知道,我去看看。 Tks 兄弟
      • @TruffelNL 请检查我找到的可能解决方案。
      猜你喜欢
      • 1970-01-01
      • 2021-12-11
      • 2021-10-11
      • 2014-11-13
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多