iOS跳转第二ViewController无法显示大尺寸高清网络图片原因排查
问题排查方向
- 首先检查未实现的方法问题:你在
viewDidLoad中调用了downloadImage(from: url)方法,但你贴出的代码中完全没有该方法的实现,如果该方法不存在会直接导致崩溃或者静默失败,建议先删除这行调用,你已经在viewWillAppear中写了图片下载逻辑,不需要重复调用。 - 检查IBOutlet关联有效性:打开Storyboard,查看
MyImageViewController中myImageView的绑定是否正常,左侧关联标记如果为空心说明断连,此时myImageView为nil,即使下载到图片也无法赋值显示。 - 检查UIImageView配置:
- 确认
myImageView的约束是否正确,是否存在宽高为0、位置超出屏幕范围的情况 - 确认
contentMode设置是否符合预期,若设置为scaleAspectFill需要同时勾选clipsToBounds避免图片溢出,若图片本身带透明背景,可先将myImageView的背景色设为深灰排查是否是图片已加载但肉眼看不到的问题
- 确认
- 检查网络请求相关问题:
- 打印
selectedImage的值,手动复制到浏览器确认URL可以正常访问,同时确认URL(string: self.selectedImage)是否创建成功,可以在guard失败的分支加打印,排查是否是URL带特殊字符未转义导致创建失败 - 确认URL是否为HTTP协议,iOS默认ATS策略会拦截HTTP请求,需要在Info.plist中配置对应域名的白名单,或者临时开启全局HTTP权限测试
- 在网络请求的error分支添加打印,排查是否是网络错误、404、权限不足等问题导致没有拿到图片数据
- 打印
- 检查大图尺寸逻辑:你当前传递的是
urls.regular尺寸的URL,若需要更高清更大的图片,需要确认后台返回的URLS结构体是否包含full/raw等更大尺寸的字段,替换传递的字段即可。
内容的提问来源于stack exchange,提问作者Allahverdi
相关产品推荐
相关产品推荐

