UICollectionView的标题视图不断重复滚动-如何创建固定的(非粘性)单个集合视图标题?

时间:2019-06-18 10:37:54

标签: swift xcode uicollectionview xcode10 uicollectionreusableview

我想实现如下所示的视图层次结构,以便整个视图都可滚动:

UIScrollView

  • 图像视图

  • 收藏夹视图

但是这里的很多人都说,最好使用集合视图随附的标头。我已经做到了,但是现在有了一个新问题:在滚动集合视图时,我对viewForSupplementaryElementOfKind函数中的标头单元所做的任何配置都在重复(例如:如果我以编程方式在viewForSupplementaryElementOfKind函数中创建新视图,当我滚动时,该视图将继续创建)

我有点发觉这是因为我正在使用dequeueReusableSupplementaryView使标题出队。但是我已经尝试过搜索Apple文档,并且没有其他代码可用于实例化标题视图而不使其可重用。

是否可以使用UICollectionView创建如上所述的视图控制器?

我尝试将部分的数目设置为1,希望它只能被重用一次,但是不起作用。

编辑:还尝试使用UICollectionViewDelegateFlowLayouta并使用UICollectionView代替UIViewController和UICollectionViewDataSource等设置标题大小。

func collectionView(_ collectionView: UICollectionView,
                                 viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView 
{
        switch kind {
        case UICollectionView.elementKindSectionHeader:
            guard
                let headerView = collectionView.dequeueReusableSupplementaryView(
                    ofKind: kind,
                    withReuseIdentifier: "DiscoverHeader",
                    for: indexPath) as? DiscoverHeader
                else {
                    fatalError("Invalid view type")
            }

            // Rotating arrow image
            headerView.arrowImg.transform = headerView.arrowImg.transform.rotated(by: CGFloat.pi/0.67)

            return headerView
        default:
            assert(false, "Invalid element type")
        }
}

1 个答案:

答案 0 :(得分:0)

为什么$transactions = \Stripe\BalanceTransaction::all([ "created" => [ "gte" => strtotime('-2 month'), "lte" => strtotime('1 day') ] ]); foreach ($transactions->autoPagingIterator() as $transaction) { // Do something with $transaction print_r($transaction->id . " : " . date("Y-m-d\TH:i:s\Z", $transaction->created) . "\n"); } 中没有UIImageViewUICollectionView

您绝对可以创建一个UIScrollView并在其中添加一个UIScrollView和一个UIImageView

但是,这将无法正常工作。这是因为您正在将UICollectionView嵌入另一个scrollView(UICollectionView)中。 scrollView Scrolling垂直会阻碍外部collectionView的{​​{1}}。

解决方案:

尝试使用scrolling方法给出scrollView中的height

header view

还要将UICollectionViewDelegateFlowLayout's的{​​{1}}设置为func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { return CGSize(width: collectionView.bounds.width, height: 100.0) //give the height as per your requirement... }