我的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
有任何操作!
谢谢!
答案 0 :(得分:1)
您不能像您一样缩放集合,而是缩放简单的滚动视图。相反,您应该添加捏手势(或其他一些缩放机制)并使用它来更改布局,以便您的网格在集合的可见部分显示不同数量的项目。这基本上改变了列数,从而改变了项目大小(单元格大小)。当您更新布局时,集合可以在不同大小之间设置动画,虽然您不太可能想要平滑缩放,但您希望它在一步中从N列直接转到N-1列。
答案 1 :(得分:1)
我认为你所要求的内容看起来就像在WWDC1012视频中所做的那样,题为高级集合视图和构建自定义布局(演示在20:20开始)https://www.youtube.com/watch?v=8vB2TMS2uhE
您基本上必须将pinchGesture添加到UICollectionView,然后将pinch属性(scale,center)传递给UICollectionViewLayout(它是UICollectionViewFlowLayout的子类),然后您的布局将执行缩放所需单元格所需的转换。