如何更改自定义 UICollectionView 布局引擎中的默认布局动画曲线?
Posted
技术标签:
【中文标题】如何更改自定义 UICollectionView 布局引擎中的默认布局动画曲线?【英文标题】:How to change the default layout animation curve in a custom UICollectionView layout engine? 【发布时间】:2016-02-08 12:02:23 【问题描述】:我有一个集合视图设置,可以使用自定义集合视图布局运行。我可以通过更改 UICollectionViewLayoutAttributes 上的转换和 alpha 来设置单元格出现和消失的动画,但是,我想将动画曲线更改为使用弹簧 + 阻尼,以使单元格在出现时“弹跳”。
有人知道我如何实现这一目标吗?
谢谢,
【问题讨论】:
你现在使用什么代码? 你可以通过使用UIKitDynamics
来做到这一点,有一篇关于它的非常好的博客文章。 shinobicontrols.com/blog/ios7-day-by-day-day-0-uikit-dynamicsshinobicontrols.com/blog/…你要下载博客中用到的代码这里是仓库github.com/shinobicontrols/iOS7-day-by-day
我正在使用一个自定义 UICollectionViewLayout 子类来覆盖该方法:initialLayoutAttributesForAppearingItemAtIndexPath
【参考方案1】:
将 UICollectionView 的 deleteItems/insertItems/reloadItems
调用封装在 UIView.animateWithDuration:delay:options:animations:completion:
调用中。
例子:
let duration = 0.25 // Hardcoded keyboard animation duration and curve
let curve = UIViewAnimationOptions(rawValue: 7 << 16) // ↑
UIView.animate(withDuration: duration, delay: 0, options: curve, animations: ( [weak self] in
self?.collectionView?.performBatchUpdates(
self?.collectionView?.deleteItems(at: deletedIPs)
self?.collectionView?.insertItems(at: insertedIPs)
self?.collectionView?.reloadItems(at: updatedIPs)
, completion: nil)
), completion: nil)
【讨论】:
以上是关于如何更改自定义 UICollectionView 布局引擎中的默认布局动画曲线?的主要内容,如果未能解决你的问题,请参考以下文章
Swift - UICollectionView:如何在标题中自动布局标签间距
如何在 iOS 中动态更改 UICollectionView 单元格高度
如何更改自定义 CollectionViewCell 的背景颜色?