无法将PNG图像加载为UIImage

时间:2015-02-05 20:29:39

标签: ios swift uiimage png

我正在尝试将位于我的XCode项目中的.PNG图像加载为UIImage - 但是UIImage的构造函数返回nil

请参阅我的设置屏幕截图:

enter image description here

以下是一些细节:

  • 该项目在Swift
  • 我在全局变量(懒惰)
  • 中构建UIImage
  • 问题出现在模拟器和设备上(iPhone 5S)
  • 我使用不同的名称多次添加相同的图像,以确保不正确的命名不是原因(请参阅左红色矩形中的所有名称)
  • 所有图片都已添加到EasyTypeShared目标,这是一个嵌入到可验证EasyType项目中的图书馆项目。
  • 我没有做任何axtra步骤 - 只是将图像文件添加到我的工作区(和EasyTypeShared目标)并运行应用程序

编辑:根据this blog,原因可能是工作区设置 - 更准确地说框架正在加载图像。不确定,但缺乏更好的想法,我将遵循这条轨道。如果你能对这件事有所了解,我会非常感谢任何想法。

3 个答案:

答案 0 :(得分:2)

问题是由于从资源加载图像的代码驻留在框架中。主bundle不包含框架的资源,需要使用相应的bundle。工作代码:

private let imagePlaceholder = UIImage(named: "ImagePlaceholder.png", inBundle: NSBundle(forClass: CarretMoveController.self)

答案 1 :(得分:1)

这些是images.xcassets的一部分吗?如果不是,则必须使用NSBundle读取它们并获取资源的路径/ URL,所有这些和简单的文件名都不够。

您可以根据Apple文档here将文件添加到资源。相关部分可能是“添加图像集”'之一。

如果您没有images.xcassets,则可以根据here给出的答案之一将其添加到项目中。

答案 2 :(得分:0)

在项目资源管理器中我可以看到图像没有正确命名。 它应该是这样的:

imagePlaceHolder.png
imagePlaceHolder@2x.png

注意文件名末尾的png和文件扩展名之前的@ 2x。