通过UICollectionViewLayouts循环不起作用,但单步执行。为什么?

时间:2016-12-12 18:18:37

标签: ios swift uicollectionview uicollectionviewlayout

此问题的代码位于GitHub:Circles

我正在尝试使用自定义布局“动画化”UICollectionView的扩展。

起始位置是:

enter image description here

结束位置是:

enter image description here

问题在于,当使用各种不同的策略循环遍历自定义布局数组时,扩展不会逐步进行:

for layout in self.layoutArray { //where layoutArray is an array of UICollectionViewLayout(s)

        // DispatchQueue.main.async {

        self.circleCollectionView.collectionViewLayout.invalidateLayout()
            self.circleCollectionView.setCollectionViewLayout(layout, animated: true)

        self.circleCollectionView.reloadData()

         // }

        }

基本上,上面的“等待”显示中间步骤,然后在显示之前立即执行(我认为 - 可能只是做最后一步)。

我可以“逐步完成布局”,每个“中间”加载并按预期显示:

 @IBAction func stepAction(_ sender: Any) {

 z = z + 1   //stepping through layoutArray


 // DispatchQueue.main.async {
 self.circleCollectionView.collectionViewLayout.invalidateLayout()
 self.circleCollectionView.setCollectionViewLayout(self.layoutArray[self.z], animated: true)
 //self.circleCollectionView.reloadData()

 //}


}

单步:

enter image description here

我已经彻底浏览了gitHub和其他地方,但找不到答案。

BTW,

DispatchQueue.main.async

以及其他几种“强制”完成流程的方法,似乎无法解决问题。

0 个答案:

没有答案