为啥在 Web 浏览器中工作的 url 没有在 UIImageview 中加载
Posted
技术标签:
【中文标题】为啥在 Web 浏览器中工作的 url 没有在 UIImageview 中加载【英文标题】:why the url working in web browser not loading in UIImageview为什么在 Web 浏览器中工作的 url 没有在 UIImageview 中加载 【发布时间】:2017-07-21 05:53:39 【问题描述】:嗨,在我的应用程序中想要显示来自 url 的图像。该网址基于此处的 api 响应,通过共享示例格式 https://myserver.com/:myimage.jpg 当我在 Web 浏览器中浏览此响应时,会显示图像,但是当我尝试在 UIImageView 中加载它时,不会显示图像。当我从 :myimage 中删除 ':' 时,它也在 UIImageView 中工作。为什么在 Web 浏览器中工作的 url 没有在 UIImageview 中加载
以下是我的代码
NSString *STR_url = @"https://myserver.com/:myimage.jpg";
_IMG_imageVW.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:STR_url]]];
工作代码是
NSString *STR_api = @"https://myserver.com/";
NSString *STR_image_resp = @":myimage.jpg";
STR_image_resp = [STR_image_resp stringByReplacingOccurrencesOfString:@":" withString:@""];
NSString *STR_final = [NSString stringWithFormat:@"%@%@",STR_api,STR_image_resp];
_IMG_imageVW.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:STR_final]]];
【问题讨论】:
您是否在应用中添加了传输安全性 你的意思是STR_final
答案是问题中的STR_url
【参考方案1】:
您可以使用以下代码来解决您的问题。 这是您可以找到 SDWebImageView 的类文件的链接。 https://github.com/rs/SDWebImage
NSString* UserImage=[NSString stringWithFormat:@"%@",[[UserFeedArray objectAtIndex:indexPath.row] valueForKey:@"profile"]];
UserImage = [UserImage stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];
[cell.UserProfilePic sd_setImageWithURL:[NSURL URLWithString:UserImage] placeholderImage:[UIImage imageNamed:@"logo"] options:SDWebImageRefreshCached];
【讨论】:
【参考方案2】:当您想使用 URLWithString 进行初始化时,应正确编码参数。例如,如果要加载文件名中有空格的在线图像文件,则应使用 %20 进行转换。它会在浏览器中加载,因为浏览器会进行转换。
可以试试下面看看—— NSString *URLEscapedString = [STR_url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
【讨论】:
以上是关于为啥在 Web 浏览器中工作的 url 没有在 UIImageview 中加载的主要内容,如果未能解决你的问题,请参考以下文章
为啥在超级终端中工作的永久别名在 vs-code bash 终端中不起作用?
Firebase - 为啥不搜索在我的应用中工作的用户? (当用户输入两个字母时更新搜索控制器)
在 python 3 和 2 中工作的 Unicode 文字
在 Eclipse 中工作的 Web 应用程序给出了验证 EL 错误 org.apache.catalina.core.StandardWrapperValve 调用