Xamarin Studio只导出应用程序编译后位于顶级应用程序包目录中的图像。这是因为Xcode的.xib文件似乎只能引用顶级应用程序包中的图像。
有多种实现目标的方法:
第一种选择是将“LogicalName”指定为编译后应用程序包内想要的名称。在Xamarin Studio中,此属性称为“Resource ID”(根据使用的Xamarin Studio版本可能可用或不可用 - 仅最近添加)。也可以通过编辑*.csproj文件来设置LogicalName,方法如下:
<BundleResource Include="Icons\icon.png">
<LogicalName>icon.png</LogicalName>
</BundleResource>
通常情况下,Icons\icon.png
这个文件将会被复制到 iOS 应用束(app bundle)中作为 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
文件夹中。资源文件夹是一个特殊的目录,当被复制到 iOS 应用程序包时,会从默认路径名中删除。换句话说,
Resources\icon.png
将作为
icon.png
被复制到 iOS 应用程序包的根目录中,而不是像普通项目目录一样作为
Resources\icon.png
。
第三个选项是简单地注册其他自己的“Resource”目录(它们可以存在于其他目录中,包括默认的 Resources 目录)。
例如,您可以在项目中使用以下结构:
Resources/
Icons/
icon.png
icon@2x.png
在您的*.csproj文件中,编辑以下标签:
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
并将其替换为:
<IPhoneResourcePrefix>Resources;Resources\Icons</IPhoneResourcePrefix>
这将确保 icon.png 和 icon@2x.png 文件被安装在 iOS 应用程序包的根目录中。