Objective c iOS 7.1(仅限)UIImageView中的不可见图像

Objective c iOS 7.1(仅限)UIImageView中的不可见图像,objective-c,uiview,uiimageview,ios7.1,Objective C,Uiview,Uiimageview,Ios7.1,以下代码在iOS 6.0和iOS 7.0上运行良好,我们在标题(UIView)上设置了徽标(UIImageView) 升级到SDK iOS7.1时。下面这些停止工作了,我完全不知道为什么 // Header header = [[UIView alloc] initWithFrame: CGRectMake(0, baseYPos, self.view.viewSize.width, 50)]; header.backgroundColor = [UIColor blackColor]; [se

以下代码在iOS 6.0和iOS 7.0上运行良好,我们在标题(UIView)上设置了徽标(UIImageView)

升级到SDK iOS7.1时。下面这些停止工作了,我完全不知道为什么

// Header
header = [[UIView alloc] initWithFrame: CGRectMake(0, baseYPos, self.view.viewSize.width, 50)];
header.backgroundColor = [UIColor blackColor];
[self.view addSubview: header];

// LOGO
UIImageView *logo = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, header.viewSize.width, header.viewSize.height - 20)];
logo.image = [UIImage imageNamed: @"logo.png"];
logo.alpha = 1;
logo.contentMode = UIViewContentModeScaleAspectFit;
logo.center = ccp(header.center.x, header.center.y - baseYPos);
[header addSubview: logo];
使用。在iOS7.0中查看应用程序时,我看到UIImageView在标题上方是一个浮动徽标(Reveal中的3D视图)。在iOS7.1中查看相同的应用程序时,UIImageView基本上是一个没有图像的空白透明框

我尝试了以下方法,但均无效:

  • 使用initWithImage声明UIImageView,并稍后设置帧
  • 强制“logo”上的不透明为FALSE,标题为TRUE
  • 我没有将“logo”作为子视图添加到“header”中,而是将其添加到两者的父视图中,将其作为子视图插入到header上方
这些都不管用。看起来苹果公司:

  • 更改了在UIImageView中设置图像的方式

  • 更改了将UIImageView添加到UIView父级的方式

  • 我把它编错了
我还没有在7.1上找到任何发行说明来说明这是SDK的改变-它也会导致糟糕的SDK设计-

这个问题让我很困惑,所以任何帮助都会得到永恒的感激(就像免费啤酒一样:D)


谢谢大家

将“徽标”图像添加到资产目录(AC)解决了该问题

在此之前,除了launchimage和appCode之外,我们的图像都不是AC的一部分。无论出于何种原因,iOS 7.1都无法识别“徽标”图像

所以我将我们所有的图片导入到AC中,以防将来对SDK进行任何更改-我不认为AC是强制性的,我认为它只是一个XCode 5特性

感谢@Alexander Kostiev的交流领导。希望我能给你更多的分数

这篇博文也有助于:

嗨!如果
[UIImage imageNamed:@“logo.png”]
不是
nil
,您是否已签入调试器?如果使用资产目录,可能需要删除图像名称中的扩展名(但更像是一种假设)。我还发现,如果将图像从项目文件夹导入资产目录,则无需删除图像扩展名,因为创建的.imageset文件夹中的contents.json将具有该文件名。换句话说,您可以灵活地使用名称(logo)或全名(带/不带@2x)(logo.png或logo@2x.png).