Swift3 具有UIimageView高度的动态collectionView
我想用swift 3显示collectionView中的图像。因此,该图像来自后端,仅包含URL,而不是图像大小。所以我想根据图像的高度动态显示单元格 我现在做的是Swift3 具有UIimageView高度的动态collectionView,swift3,uiimageview,uicollectionview,flowlayout,Swift3,Uiimageview,Uicollectionview,Flowlayout,我想用swift 3显示collectionView中的图像。因此,该图像来自后端,仅包含URL,而不是图像大小。所以我想根据图像的高度动态显示单元格 我现在做的是 let url = self.myArray[indexPath.row].image let data = NSData(contentsOf:URL(string: url)!) var photo = UIImage() if (data?.length)! &
let url = self.myArray[indexPath.row].image
let data = NSData(contentsOf:URL(string: url)!)
var photo = UIImage()
if (data?.length)! > 0 {
photo = UIImage(data:data! as Data)!
}
let boundingRect = CGRect(x: 0, y: 0, width: width, height: CGFloat(MAXFLOAT))
let rect = AVMakeRect(aspectRatio: photo.size, insideRect: boundingRect)
return rect.size.height
它还给我高度
问题是:图像是高达3MB大小的高清图像
let data = NSData(contentsOf:URL(string: url)!)
需要很多时间,因为我有20到30张图片
有没有办法在另一个线程而不是主线程上下载图像,以便在后台继续下载图像
或者任何人都有一个更好的解决方案来从URL计算图像的高度
附言:我已经跟随了定制布局
提前谢谢。你应该调查一下。它使用承诺异步发出请求,而不中断UI线程。您的代码看起来像这样
Alamofire.request(URL_STRING, method: .get, parameters: nil, encoding: URLEncoding.default, headers: getHeaders())
.validate()
.responseImage(completionHandler: {response in
switch response.result {
case .success:
//The image will be stored in response.data in NSData format
break
case .failure(let error):
//Handle errors over here
break
}
})
让我尝试一下,我想在一个返回方法func collectionView(collectionView:UICollectionView,heightForPhotoAtIndexPath-indepath:nsindepath,withWidth:CGFloat)->CGFloat中调用它