【问题标题】:UIImage not a compile-time constant, Xcode 4UIImage 不是编译时常量,Xcode 4
【发布时间】:2011-10-19 20:39:02
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: iphone objective-c ios xcode uiimage


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      所以,回答其中几个问题:

      NSImage 在 iOS 上不可用 - UIImage 是它的等价物。所以恐怕你不能使用NSImage

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

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

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

      【讨论】:

      • ...如果您的目标是 iPhone,则不会。 NSImage 在 iOS 上不存在
      【解决方案3】:

      imageWithContentsOfFile: 接受一个NSString,它是文件的路径。您提供的名称没有路径,尽管我不希望您因此看到错误。如果您改用imageNamed:,则使用没有路径的文件名会更好。

      【讨论】:

      • 那么需要看更多代码;相对于代码结构的其余部分,需要更多上下文来查看您发布的行在哪里。使用更多代码编辑您的原始帖子。
      • 已编辑;我只是想在同一个 ViewController.m 文件中初始化图像,然后将在该文件中使用图像。我应该在 .h 文件中执行此操作,还是在其他地方执行此操作?
      • 好吧,@lxt 建议错误是由于您放置该语句的上下文。当然,它需要成为方法的一部分,而不仅仅是在你的 .m 文件中随机挂出。
      猜你喜欢
      • 2014-02-18
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 2022-01-10
      • 2020-11-24
      • 2014-02-10
      相关资源
      最近更新 更多