【问题标题】:How do I add images to an Xamarin iOS project and make them available in Interface Builder?如何将图像添加到 Xamarin iOS 项目并使其在 Interface Builder 中可用?
【发布时间】:2013-09-10 10:05:03
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: xamarin.ios interface-builder xamarin-studio


    【解决方案1】:

    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 文件将作为Icons/icon.png 复制到 iOS 应用程序包中,但是,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 将作为icon.png 复制到 iOS 应用程序包的根目录中,而不是像普通项目目录中的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 应用程序包的根目录中。

    【讨论】:

    • 目前我正在使用您的第二个选项。不过,第三个选项对我来说听起来更好。如果我想要“资源”中的多个子目录怎么办?例如资源/图标/icon.png icon@2x.png 和资源/内容/feature.png feature@2x.png。我会将以下内容添加到 .csproj 文件中吗? 资源;资源/图标;资源/内容
    • 是的。您可以拥有任意数量的资源目录。
    • 如果您接受我的回答,这可能会帮助其他有类似问题的用户找到此答案。谢谢!
    • 唯一的方法是立即在文本编辑器中打开 *.csproj 文件
    • 抱歉...它已在 git master 中修复,将在 4.2.3 中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2012-06-12
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多