12

我正在 Xamarin 中构建一个 iOS iPad 应用程序。

我在项目根目录中创建了一个名为 Resources 的文件夹,例如 ProjectName/Resources。这里有一个子文件夹 ProjectName/Resources/Images。我已将 2 张图像添加到图像文件夹中。

然后,在 Interface Builder(在 Xcode 中)中,我在我的 xib 文件中添加了一个 UIImageView 并转到属性检查器中的 Image 下拉菜单。没有可供选择的图像。

也许我必须通过 Xcode 添加它们?如果是这样,正确的步骤和文件结构是什么?

处理图像并使它们可供在 Interface Builder 中选择的正确方法是什么?

4

1 回答 1

12

Xamarin Studio 仅在编译应用程序时导出将存在于顶级应用程序包目录中的图像。这是因为 Xcode 的 .xib 文件似乎只能引用顶级应用程序包中的图像。

有多种方法可以实现您的目标:

第一个选项是将 a 指定为LogicalName您希望将名称包含在已编译的应用程序包中的任何名称。在 Xamarin Studio 中,此属性称为Resource ID(根据您使用的 Xamarin Studio 版本,可能可用也可能不可用 - 它只是最近添加的)。您还可以通过编辑 *.csproj 文件来设置 LogicalName,如下所示:

<BundleResource Include="Icons\icon.png">
  <LogicalName>icon.png</LogicalName>
</BundleResource>

通常,该Icons\icon.png文件将作为 复制到 iOS 应用程序包中Icons/icon.png,但是,LogicalName 属性会覆盖相对安装路径/名称。在这种情况下,它将被简单地复制过来icon.png

作为另一个例子,你也可以这样做:

<BundleResource Include="Icons\iOS\icon.png">
  <LogicalName>AppIcon.png</LogicalName>
</BundleResource>

这会将Icons\iOS\icon.png文件复制到 iOS 应用程序包的根目录中,并将其重命名为AppIcon.png.

第二种选择是简单地将图像文件移动到Resources文件夹中。Resources 文件夹是一个特殊目录,当复制到 iOS 应用程序包时,它会从默认路径名中删除。换句话说,Resources\icon.png它将被复制到 iOS 应用程序包的根目录中,icon.png而不是Resources\icon.png像普通项目目录那样。

第三种选择是简单地注册您自己的其他“资源”目录(它们可以存在于其他目录中,包括默认的资源目录)。

例如,您的项目中可能具有以下结构:

Resources/
   Icons/
      icon.png
      icon@2x.png

在您的 *.csproj 文件中,编辑以下标签:

<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>

并将其替换为:

<IPhoneResourcePrefix>Resources;Resources\Icons</IPhoneResourcePrefix>

这将确保 icon.png 和 icon@2x.png 文件安装在 iOS 应用程序包的根目录中。

于 2013-09-10T23:17:30.347 回答