Swift:如何在方法返回之前获取异步数据?

时间:2016-06-15 21:56:48

标签: ios swift uicollectionview

我正在尝试使用以下插件进行网格布局。 https://github.com/ecerney/CollectionViewWaterfallLayout

它要求我为实际图像大小的每个单元格返回一个cgsize。

所以我试图用另一个cocoapod插件来达到这个大小:

https://github.com/IMcD23/IMRemoteImageSize/

但是,“getImageSize”是一个异步调用来获取我相信的图像。因此,每次cgsize的返回值都是“nil”。在返回函数执行之前,有没有办法让我获得大小?谢谢!

func collectionView(collectionView: UICollectionView, layout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

    let image = images[indexPath.row]

    var sizeOfTopCover:CGSize?

    UIImage.getImageSize(image.url, completion: {


        (size) -> Void in
        print("Got size of image: \(image.url): \(size)")

        sizeOfTopCover = size

    })

    return sizeOfTopCover! <<< breaking here

}

1 个答案:

答案 0 :(得分:0)

致电时必须知道尺寸

      setTimeout(function() {
         circle.addClass('active');
      }, 300);

但是,当收到所有单元格的大小时,您可以重新加载集合视图。 或者在收到单元格大小时重新加载每个单元格。