集合视图的自定义动画

Custom animation for a collection view

我正在学习如何在非常好的 CollectionViewPagingLayout 模板示例中为 collectionView 使用动画。这个:https://github.com/amirdew/CollectionViewPagingLayout

contentView 中的第一个对象一切正常。

但它不识别其他子视图。如果子视图中有一个 UILabel - 所有名称都会立即显示(尽管可以看出它们正在更改)。 Here is a 5-sec video how it looks like

我想我应该将所有子视图合并到一个视图中 - 或者修改模板以识别所有子视图。但是在没有帮助的情况下,我不明白如何实现其中任何一个。

模板作者提供了详细的使用说明文档:https://github.com/amirdew/CollectionViewPagingLayout/blob/master/Lib/TransformableView.swift

虽然它显然写得很好 - 但我未能正确阅读它。我觉得这几行可能会解决问题,但是将它们添加到代码中并没有改变任何东西:

public extension TransformableView where Self: UICollectionViewCell {
    
    /// Default `selectableView` for `UICollectionViewCell` is the first subview of
    /// `contentView` or the content view itself if there is no subview
    var selectableView: UIView? {
        contentView.subviews.first ?? contentView
    }
}

还有这个

public extension UICollectionViewCell {
    /// This method transfers the event to `selectableView`
    /// this is necessary since cells are on top of each other and they fill the whole collectionView frame
    /// Without this, only the first visible cell is selectable
    // swiftlint:disable:next override_in_extension
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        if let view = (self as? TransformableView)?.selectableView {
            return view.hitTest(convert(point, to: view), with: event)
        }
        return super.hitTest(point, with: event)
    }
}

非常感谢您对此问题的帮助。

您链接到的代码和文档状态:

/// Default `selectableView` for `UICollectionViewCell` is the first subview of
/// `contentView` or the content view itself if there is no subview

因此,将单元格的“第一个子视图”设为“容器”UIView,并将多个子视图嵌入到该视图中: