我正在编写一个iPhone程序,其中一堆图像必须从界外动画到屏幕上,然后从屏幕上退回。我正在尝试创建一些可用于动画的UIImages,使用我已添加到程序中的组中的图像,但我不断收到一条错误消息“Initializer element is not a compile-time constant”。
这是我用于初始化图像的特定代码,放在ViewController.m文件中:
UIImage* name = [UIImage imageWithContentsOfFile:@"imagename.png"];
为了使这项工作,我需要添加或更改什么?我可以将NSImage用于动画,还是必须是UIImage?感谢。
编辑:通过将代码放在appDelegate.m didFinishLaunchingWithOptions:方法中来修复。
答案 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:
,那么使用没有路径的文件名会更好。