如何在UICollectionView中进行缩放

7

我有带有CustomCollectionViewLayoutuicollectionview代码,其中包含很多小单元格,但用户没有缩放功能就看不到它们。同时所有单元格都可选择。

我想要添加我的收藏视图内的缩放功能!

以下是我清晰的代码。

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,但是没有任何作用!

enter image description here

谢谢!


这个问题可能会有所帮助:使CollectionView可缩放 - jojoT
@jojoT 謝謝,但那個範例是用 Objective-C 寫的,而且是針對每個項目進行縮放操作。我需要 Swift 的代碼,並且需要區域縮放而不是對每個項目進行簡單的縮放。 - SwiftDeveloper
如果用户触摸集合视图,那么单元格会放大吗?您的意思是,在触摸后,整个集合视图变得模糊,只有被触摸的单元格出现在屏幕中心,以可见的宽度和高度显示吗? - Rajamohan S
@MohanSingh 当用户触摸单元格时,将会进行缩放,看起来单元格大小会增加6倍。简单的缩放不会改变单元格位置,只会像照片缩放一样进行简单的缩放。 - SwiftDeveloper
2个回答

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

谢谢你,但我知道那些。我想在点击时将我的UICollectionView集成到简单的ZOOM内部,然后进行缩放。我需要不需要思路的代码 :) - SwiftDeveloper

1
我认为你所要求的看起来像是在WWDC1012视频中展示的高级集合视图和构建自定义布局(演示从20:20开始)https://www.youtube.com/watch?v=8vB2TMS2uhE。您基本上需要将pinchGesture添加到您的UICollectionView,然后将pinch属性(比例,中心点)传递给UICollectionViewLayout(它是UICollectionViewFlowLayout的子类),您的布局将执行所需的转换以缩放所需的单元格。

我之前看过,但没有解决我的问题。 - SwiftDeveloper
创建一个视图作为父集合视图,集合视图可以进行缩放。 - Puji Wahono

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接