Apple Photos collectionview 捏缩放如何工作?

Posted

技术标签:

【中文标题】Apple Photos collectionview 捏缩放如何工作?【英文标题】:How Apple Photos collectionview pinch zoom works? 【发布时间】:2020-12-31 15:32:01 【问题描述】:

如果您转到 Apple Photos 并进行缩放,您可以放大/缩小以更改网格中的列数。我假设它使用UICollectionView,但是,我不知道它是如何获得这个动画的。

以编程方式更改 UICollectionView 中的列数并不难,我不太了解动画。

有什么想法吗?

【问题讨论】:

任何答案都是猜测。看起来他们正在观看手势,并准备好使用不同布局的一整套集合视图,然后交叉融合到系列中的下一个。 【参考方案1】:

看起来手势触发了新的布局。有一整门课程致力于优雅地在布局之间切换:UICollectionViewTransitionLayout。文档部分说:

您可以按原样使用 UICollectionViewTransitionLayout 或将其子类化为 为您的应用程序提供专门的行为。过渡的常见用途 布局是创建交互式过渡,例如那些 由手势识别器或触摸事件驱动。

与基于时间的常规动画不同,布局之间的过渡由您更新的transitionProgress 属性驱动,因此过渡可以轻松跟踪手势。您可以在照片中准确地看到这种情况:如果您在捏合和缩放之间交替,则过渡会前后移动。

Photos 有可能使用 UICollectionViewTransitionLayout 的子类来提供更完美的用户体验,但如果您想模仿 Photos 的功能,我认为这个类是正确的开始方式.

【讨论】:

这非常有帮助,感谢您的见解。我见过一个在不同尺寸的布局之间转换的例子。苹果更进一步,不知何故能够做淡化效果和一些细胞从屏幕上剪掉。如果您有任何见解,很想听听。 如果您想包含淡入淡出,请使用transitionProgress 属性来驱动与淡入或淡出的布局关联的UICollectionViewLayoutAttributesalpha 属性。

以上是关于Apple Photos collectionview 捏缩放如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何像 iOS Photos 应用一样实现缩放*和*分页

来自 Apple 的许可:照片、服务器等

是否可以在照片中搜索对象?

有没有办法在 SwiftUI 中更改列表的背景颜色? 2020 (iOS 14)

obj.photos.url 不显示图片

Layui 内置方法 - layer.photos(相册层)