CollectonView "readjusts" 载入视图后的原点

CollectonView "readjusts" origin after loaded into view

我正在制作自定义贴纸包。这是一个 iMessage 扩展应用程序。我继承了 UICollectionView 而不是使用基本的 MSMessagesViewController。所以只有当我 select 将展开视图中的人字形图标变回紧凑视图时才会发生这种情况。发生了什么(你可以在下面的 gif 中看到)是贴纸放置在视图中并且似乎设置在它们的位置,但一瞬间之后,它们似乎重新调整了它们的位置......CollectionView 中有什么东西吗我应该做些什么来防止这种情况发生?

我开始认为这可能是一个错误,因为包含文本字段、iMessage 应用程序抽屉图标、心形图标和相机图标的 header 栏似乎 cut-off 关于与班次相同的金额。

here is the code from github

您的代码存在的问题是,您的 layout() 调用中的 collectionView 的 contentInset 与原始位置相差 6 个像素。这就是为什么在动画结束后动画调整6像素的原因。

只需将 StickerCollectionVC 内的 layout() 调用中的 UIEdgeInsets() 更改为:

self.collectionView?.contentInset = UIEdgeInsets(   top: screenW * 0.1 - 6,
                                                            left: screenW * 0.1,
                                                            bottom: 20 + (screenW * 0.1),
                                                            right: screenW * 0.1)