UICollectionViewCell 滚动时缩放单元格大小
Posted
技术标签:
【中文标题】UICollectionViewCell 滚动时缩放单元格大小【英文标题】:UICollectionViewCell scale cell size while scrolling 【发布时间】:2015-05-05 21:58:49 【问题描述】:我正在尝试创建一个 UICollectionView,当“离开”顶部或底部的可见区域时,UICollectionViewCell 会按比例缩小。并在“进入”可见区域时放大到正常大小。
我一直在尝试一些缩放/动画代码:
scrollViewDidScroll()
,但我似乎无法正确处理。
我的完整函数如下所示:
func scrollViewDidScroll(scrollView: UIScrollView)
var arr = colView.indexPathsForVisibleItems()
for indexPath in arr
var cell = colView.cellForItemAtIndexPath(indexPath as! NSIndexPath)!
var pos = colView.convertRect(cell.frame, toView: self.view)
if pos.origin.y < 50 && pos.origin.y >= 0
cell.hidden = false
UIView.animateWithDuration(0.5, animations: () -> Void in
cell.transform = CGAffineTransformMakeScale(0.02 * pos.origin.y, 0.02 * pos.origin.y)
)
else if pos.origin.y == 50
UIView.animateWithDuration(0.5, animations: () -> Void in
cell.transform = CGAffineTransformMakeScale(1, 1)
)
这在某种程度上是正确的方法,还是有其他更好的方法?
【问题讨论】:
查看 iCarousel。这是一个很棒的库,支持我认为您正在寻找的效果。 谢谢 Tobias,我马上去看看! 你成功了吗? 【参考方案1】:不是一个完整的解决方案,而是一些评论/指针:
-
1234563 /p>
执行if pos.origin.y == 50
绝对不是一个好主意,因为滚动可能不会通过所有值(也就是说,它可能会从 45 跳到 53)。因此,如果您想确保动画仅在“边界”处执行一次(例如,存储最后一个位置或标志),请使用 >=
并包含其他方式。
【讨论】:
太棒了,我会记住这一点并继续测试东西。谢谢!以上是关于UICollectionViewCell 滚动时缩放单元格大小的主要内容,如果未能解决你的问题,请参考以下文章
在 UICollectionViewCell 内的 UICollectionView 中平滑滚动
UICollectionViewCell 内的 UIScrollView 不滚动
向下滚动时多次选择 UICollectionViewCell?