【问题标题】:UIImageView displays downloaded images from HTTP, but won't display image resourceUIImageView 显示从 HTTP 下载的图像,但不会显示图像资源
【发布时间】:2017-04-13 22:15:41
【问题描述】:

在用户登录后我的第一个视图控制器中,可以快速检查用户是否已将自定义图像上传到他的帐户。 (如果有,用户的个人资料数据中有一个 URL。)

这些图像在我的代码中正确下载,并且它们显示得很漂亮。当没有自定义用户图像时出现问题,并且 VC 尝试将相同的 UIImageView 设置为默认图片(在 xcassets 中)。据我所知,图片正在加载到捆绑包中,它是一个有效的 PNG 文件。

这里是设置图片的sn-p。如果未找到自定义 URL,我将 URL 参数字符串设置为“nil”。

-(void) setImageWithUrl: (NSString *) Url Imageview: (UIImageView *) image {

if (Url.length > 4) {
    NSURL *url = [NSURL URLWithString:Url];

    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *Profileimage = [UIImage imageWithData:data];

    [image setImage:Profileimage];
}
else {
    UIImage *Profileimage = [UIImage imageNamed:@"DefaultPicture"];

    [image setImage:Profileimage];
}
}

这个让我发疯了,所以欢迎所有奇怪的想法。 :-)

如果您希望我发布您认为可能是影响因素的任何其他代码部分,请告诉我。

【问题讨论】:

  • 您是否设置了断点并在调试中单步执行?如果是这样,流实际上是否在if (Url.length > 4) 失败并落入else?如果是这样,Profileimage 是否从[UIImage imageNamed:@"DefaultPicture"]; 获得有效图像?找出哪个问题的答案为“否”,您应该找到解决方案。
  • @DonMag 标准的调试练习很成功。事实证明,由于数据库有时会在用户配置文件中放入一些“额外垃圾”,Url.length 总是大于 4。在代码中解决了这个问题。

标签: ios objective-c uiimageview uiimage


【解决方案1】:

看起来像需要调试的问题。但是你为什么不使用任何图像下载/缓存库,比如SDWebImage? 它会非常高效和方便

【讨论】:

  • 这是个好主意,但它没有解决默认图像不出现的原因。 (但我可能会在未来的版本中添加一些这样的优化:这只是该应用程序的第一个计划版本。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多