因此,经过5个小时的坚实咒骂,我终于设法将我的项目从Swift 2.2转换为Swift 3.事情构建,现在一切都很精明,只有一个小例外。
出于某种原因,我的图像不像以前那样进行异步下载。
我已经录制了一些视频给您,以及一些代码示例。我正在尝试AlamofireImage和纯粹的swift扩展,两者都给出相同的行为。正如您在视频中看到的那样,最初图像根本没有加载(我也注意到由于某种原因,默认的占位符图像最初没有显示)当我拉动刷新视图时,它们突然出现。
如果有人见过类似的东西,我会很感激帮助。
视频为here
代码示例如下: 扩展功能
func downloadedFrom(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit) {
contentMode = mode
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard
let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
let mimeType = response?.mimeType, mimeType.hasPrefix("image"),
let data = data, error == nil,
let image = UIImage(data: data)
else { return }
DispatchQueue.main.async() { () -> Void in
self.image = image
}
}.resume()
}
func downloadedFrom(link: String, contentMode mode: UIViewContentMode = .scaleAspectFit) {
guard let url = URL(string: link) else { return }
downloadedFrom(url: url, contentMode: mode)
}
我也将AlamofireImage用于一个单元格来测试
if nc.returnCommentDetails().image != "" {
let url = URL(string: nc.returnCommentDetails().image!)
cell.imgProfile.af_setImage(withURL: url!)
cell.imgProfile.resizeForProfilePic()
}
答案 0 :(得分:2)
所以在经过一番深思熟虑后,我找到了问题的根本原因。
它基本上有一个问题,我写的用于使图像视图为圆形的扩展,通过注释图像看起来很好。
如果有人使用类似的东西,我会调查这个并提供一个替代方案:
func resizeForProfilePic(){
self.layer.borderWidth = 0.1
self.layer.masksToBounds = false
self.layer.borderColor = UIColor.black.cgColor
self.layer.cornerRadius = self.frame.height/2
self.clipsToBounds = true
}
使用AlamofireImage似乎已对其进行了排序
let url = URL(string: nc.returnCommentDetails().image!)
let placeholderImage = UIImage(named: "DefaultImage")!
let size = CGSize(width: 100.0, height: 100.0)
let imageFilter = AspectScaledToFillSizeCircleFilter(size: size)
cell.imgProfile.af_setImage(withURL: url!, placeholderImage: placeholderImage, filter: imageFilter)
答案 1 :(得分:1)
要解决此问题,只需在layer.cornerRadius
之前添加此行#include <string>
int main()
{
std::string c = "abc";
c = c + + "d";
c = c + + + "d";
c = c + + + + "d";
c = c + + + + + "d";
printf("%s\n", c.c_str());
}
然后所有图像都显示第一次加载