怎么做放大UICollectionView

时间:2016-08-26 08:32:52

标签: ios swift uicollectionview

我的uicollectionview代码与CustomCollectionViewLayout一起使用,内部有a lot of small cells,但用户在没有zoom的情况下无法看到它们。还可以选择所有细胞。

  

我想在缩放功能中添加我的集合视图!

我的明确代码如下。

class CustomCollectionViewController: UICollectionViewController {

    var items = [Item]()


    override func viewDidLoad() {
        super.viewDidLoad()


        customCollectionViewLayout.delegate = self

        getDataFromServer()

}

 func getDataFromServer() {

        HttpManager.getRequest(url, parameter: .None) { [weak self] (responseData, errorMessage) -> () in

            guard let strongSelf = self else { return }

            guard let responseData = responseData else {
                print("Get request error \(errorMessage)")
                return
            }

            guard let customCollectionViewLayout = strongSelf.collectionView?.collectionViewLayout as? CustomCollectionViewLayout  else { return }

            strongSelf.items = responseData
            customCollectionViewLayout.dataSourceDidUpdate = true

            NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
                strongSelf.collectionView!.reloadData()
            })
        }
    }
}

extension CustomCollectionViewController {

    override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
        return items.count
    }

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return items[section].services.count + 1
    }

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CustomCollectionViewCell


            cell.label.text = items[indexPath.section].base


        return cell

}

   override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath cellForItemAtIndexPath: NSIndexPath) {

     print(items[cellForItemAtIndexPath.section].base)


}

}

另外,我在下方的UICollectionView布局属性中可以看到我选择了maxZoom 4,但doesnt有任何操作!

enter image description here

谢谢!

2 个答案:

答案 0 :(得分:1)

您不能像您一样缩放集合,而是缩放简单的滚动视图。相反,您应该添加捏手势(或其他一些缩放机制)并使用它来更改布局,以便您的网格在集合的可见部分显示不同数量的项目。这基本上改变了列数,从而改变了项目大小(单元格大小)。当您更新布局时,集合可以在不同大小之间设置动画,虽然您不太可能想要平滑缩放,但您希望它在一步中从N列直接转到N-1列。

答案 1 :(得分:1)

我认为你所要求的内容看起来就像在WWDC1012视频中所做的那样,题为高级集合视图和构建自定义布局(演示在20:20开始)https://www.youtube.com/watch?v=8vB2TMS2uhE

您基本上必须将pinchGesture添加到UICollectionView,然后将pinch属性(scale,center)传递给UICollectionViewLayout(它是UICollectionViewFlowLayout的子类),然后您的布局将执行缩放所需单元格所需的转换。