UIImage不是编译时常量,Xcode 4

时间:2011-10-19 20:39:03

标签: iphone objective-c ios xcode uiimage

我正在编写一个iPhone程序,其中一堆图像必须从界外动画到屏幕上,然后从屏幕上退回。我正在尝试创建一些可用于动画的UIImages,使用我已添加到程序中的组中的图像,但我不断收到一条错误消息“Initializer element is not a compile-time constant”。

这是我用于初始化图像的特定代码,放在ViewController.m文件中:

UIImage* name = [UIImage imageWithContentsOfFile:@"imagename.png"];

为了使这项工作,我需要添加或更改什么?我可以将NSImage用于动画,还是必须是UIImage?感谢。

编辑:通过将代码放在appDelegate.m didFinishLaunchingWithOptions:方法中来修复。

3 个答案:

答案 0 :(得分:3)

我认为你需要[UIImage imageNamed:@"imagename.png"]

initWithContentsOfFile:的问题是您需要提供磁盘上图像的完整路径,这将使您获得应用程序文档目录的路径,然后将文件名附加到其中。

imageNamed:还会缓存应用程序当前使用的图像,因此每次请求图像时都不必返回磁盘。

答案 1 :(得分:1)

所以,回答其中一些问题:

iOS上没有

NSImage - UIImage是等效的。所以你不能使用NSImage我害怕。

关于编译器错误:您应该将代码发布到创建该映像的位置。当您尝试在函数外部创建对象时,通常会发生此错误。这个答案可能会对你有所帮助:

Compiler error: "initializer element is not a compile-time constant"

......这里的一些答案都集中在你对imageWithContentsOfFile的使用上,但是由于这种编译错误,我几乎可以肯定实际情况并非如此:你的错误正在其他地方发生。因此,请检查我已链接的答案,看看是否有帮助。

答案 2 :(得分:0)

imageWithContentsOfFile:获取NSString这是该文件的路径。你提供的名字没有路径,虽然我不希望你因此而看到错误。如果您改用imageNamed:,那么使用没有路径的文件名会更好。