【问题标题】:Images not showing up when architecture set to 64 bit架构设置为 64 位时图像不显示
【发布时间】:2014-01-18 06:16:45
【问题描述】:

为了将我的应用程序转换为 64 位,我将架构构建设置更改为:

ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";

应用程序运行良好,只是某些图像未显示(空白)。为什么会发生?有什么线索吗?

【问题讨论】:

  • 那么只有在64位运行时,图像才会出现?或者现在有些图像永远不会出现?模拟器或设备或两者兼而有之?我们需要更多信息更新问题。
  • 是的,只能在 64 位设备(模拟器或 iphone 5s)上运行,有些图像在任何运行时都不会出现,并且在 32 位设备(模拟器或设备)上完美运行。
  • 我观察到,大多数失败的图像包括使用 xib 布局构建的视图和通过代码分配的图像,其他包括 uibarbuttonitems 上的自定义图像
  • 在 Dropbox 上发布一个带有此类图像的演示项目。我在这一点上的猜测是 ios 中的图像解码代码可能是问题,以及可能不正确编码的图像。对于 jpgs,ios 使用整数数组处理器,代码相当复杂。
  • 修复了,查看答案

标签: ios ios7 uiimageview 64-bit arm64


【解决方案1】:

它解决了我要更改的问题

- (void)setAlpha:(float)alpha {

到:

- (void) setAlpha:(CGFloat)alpha {

【讨论】:

    【解决方案2】:

    根据 64 位更新代码中使用的数据结构,例如将 Float 替换为 CGFloat,(如果不起作用,也将 int 类型更改为 NSInteger
    see here for more information
    就我而言,将Float 替换为CGFloat 并解决我的问题(将float 替换为CGFloat 的最简单方法)

    #define float CGFloat
    

    写入 .pch 文件并检查它是否正常工作。
    谢谢

    【讨论】:

      【解决方案3】:

      答案就在这里:

      https://devforums.apple.com/message/922989#922989

      我找到了原因。在尚未分配但包含在应用程序中的 viewController 中,实现了以下内容(在实现 viewController 上面的 .m 文件中):

      @implementation UIImageView (UIScrollView)
      - (void)setAlpha:(float)alpha {
      ..........(no difference if here is some code or not) ...............
        [super setAlpha:alpha];
      }
      @end
      

      即使没有显示图像的按钮不在滚动视图中,在上面添加评论也解决了问题。

      【讨论】:

      • 非常感谢!这为我节省了很多时间来跟踪问题。显然,我们也有类似的类别。
      • 我猜这个类别来自这里:stackoverflow.com/a/8607393/123269
      • 请注意,'alpha' 是一个 CGFloat,在 32 位系统上是浮点数,在 64 位系统上是双精度数。上述类别在所有情况下都将其声明为浮点数。
      猜你喜欢
      • 2015-03-22
      • 2019-06-13
      • 2014-08-13
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 2015-08-27
      相关资源
      最近更新 更多