【问题标题】:Images in Interface Builder when using MonoTouch使用 MonoTouch 时 Interface Builder 中的图像
【发布时间】:2010-01-11 01:12:49
【问题描述】:

我是 MonoTouch 和 iPhone 开发的新手。我在 MonoDevelop 的资源文件夹中有我的图像 (PNG),但是如果我想在 Interface Builder 中为按钮设置图像属性,我该怎么做?它始终是一个空白下拉列表。我是否需要使用 XCode 访问 XIB 文件,然后以某种方式将我需要的按钮图像文件嵌入其中?

【问题讨论】:

  • 我对单点触控一无所知,但根据我的经验,Interface Builder 要“查看”图像文件,该文件必须是 xib 文件所属的同一个 Xcode 项目的一部分。您实际上并没有将图像文件嵌入到 xib 文件中,但是 nib 加载器通常只能从应用程序包中加载资源,并且当您将图像添加到 Xcode 项目时,它会被添加为将在构建的应用程序包。因此,IB 期望 Xcode 项目资源是在 nib (xib) 文件中引用的有效文件,因为它有一定的保证它们会在运行时存在。

标签: iphone xamarin.ios


【解决方案1】:

This is a known limitation of MonoDevelop and Interface Builder。要在 Interface Builder 中将图像添加到 XIB,它们必须是 XCode 项目的一部分,当然它们不是来自 MonoDevelop。

要实现您想要做的事情,您需要通过代码设置图像,并确保将图像的构建操作设置为内容。为此,只需在 MonoDevelop 中右键单击您的图像,然后选择 Build Action > Content。

在带有按钮的视图上,在 Interface Builder 中为您的按钮创建一个插座,将其连接起来,然后从代码设置您的图像,您只需要使用 .FromFile("path/name") 方法UIImage。

UIImage buttonImage = UIImage.FromFile ("resources/image.png");
myButton.SetBackgroundImage (buttonImage,UIControlState.Normal);

这不是我的想法,但我认为应该这样做。

【讨论】:

  • 您仍然可以在 Interface Builder 中设置图像,它们在您编辑时根本不会出现在 IB 中。将图像添加到monotouch中的根目录,设置为上述内容,并在IB中将图像设置为“myimage.png”。在编辑过程中您会看到一个问号,但在运行时图像会出现。
【解决方案2】:

您可以在 Interface Builder 中手动设置图像,但直到运行时才会显示。图像名称可以包含路径,例如“图像/settings.png”。

【讨论】:

    【解决方案3】:

    这里给出的所有解决方案都完全错误且具有误导性。您需要做的就是将您的图像放在 Resources 文件夹(在项目根目录上),然后将您的图像添加到此文件夹中。将文件添加到此文件夹后,标记所有文件并确保它们的构建操作设置为 BundleResource。

    【讨论】:

    • 这个功能是2012年才添加的,所以之前的答案是正确的,但现在已经过时了。请参阅此处了解开发人员对同一问题的回答:stackoverflow.com/a/11493599/66131。无论如何,你的回答很完美,所以谢谢!
    【解决方案4】:

    我也需要这个来工作,这是我找到的解决方法。 您需要创建一个虚拟 xcode 项目。将其放在与您的项目相同的文件夹中。 当在 xcode 中打开项目时,将所有 xib 文件和图像文件添加到该 xcode 项目中。现在您将能够看到图像的预览。 图像文件必须与项目文件位于同一文件夹中,并且在打开界面构建器时必须使用虚拟项目打开 xcode。 不是很好 - 但现在解决了这个问题。 Here 是我创建的示例项目。

    为了在 MonoDevelop 端解决这个问题 - 需要创建一些进程间通信代码,我认为一个很好的起点是在 google 中寻找“PBXProjectWatcherServerConnection-3.1.2”。

    【讨论】:

    • 这行得通……有点。当我在界面生成器中选择图片时,它只使用图片的直接名称,而忽略文件路径。如果我在界面生成器中添加文件路径,图像会返回问号。有没有办法让它与路径一起工作?
    猜你喜欢
    • 2014-01-07
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多