collectionView在标题中隐藏我的自定义视图

时间:2018-05-09 04:16:50

标签: ios swift collectionview

我正在尝试将customView添加到headerView的{​​{1}}中。这是我的代码:

我在collectionView注册了headerView课程:

viewDidLoad

然后我设置collectionView.register(SearchReuseView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "reuseCell")

collectionView

但是当我在模拟器上运行时,func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { var reuseView: UICollectionReusableView? if indexPath.section == 0 || banners.count == 0 { let view = UICollectionReusableView(frame: CGRect.zero) reuseView = view } else { if kind == UICollectionElementKindSectionHeader { let view = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "reuseCell", for: indexPath) as! SearchReuseView view.backgroundColor = .black view.delegate = self view.frame = CGRect(x: 0, y: 0, width: collectionView.frame.width, height: 100) view.item = banners[indexPath.section % banners.count] return view } } return reuseView! } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { if section == 0 { return CGSize.zero } return CGSize(width: collectionView.frame.width, height: 100) } 会显示标题但内部没有任何内容。

以下是collectionView的代码:

SearchReuseView

2 个答案:

答案 0 :(得分:0)

我想知道为什么你的应用程序没有崩溃你应该首先添加子视图然后添加约束

使用以下代码替换您的代码

func setupViews() {
    backgroundColor = .black
    addSubview(adImageView)
    addSubview.translatesAutoresizingMaskIntoConstraints = false

    adImageView.isUserInteractionEnabled = true
    adImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap)))
    self.addConstraint(NSLayoutConstraint(item: self, attribute: .bottom, relatedBy: .equal, toItem: self.adImageView, attribute: .bottom, multiplier: 1, constant: 0))
    self.addConstraint(NSLayoutConstraint(item: self, attribute: .right, relatedBy: .equal, toItem: self.adImageView, attribute: .right, multiplier: 1, constant: 0))
    self.addConstraint(NSLayoutConstraint(item: self, attribute: .top, relatedBy: .equal, toItem: self.adImageView, attribute: .top, multiplier: 1, constant: 0))
    self.addConstraint(NSLayoutConstraint(item: self, attribute: .left, relatedBy: .equal, toItem: self.adImageView, attribute: .left, multiplier: 1, constant: 0))
}

希望它有用

答案 1 :(得分:0)

    if kind == UICollectionElementKindSectionHeader {
        let view = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "reuseCell", for: indexPath) as! SearchReuseView
        view.backgroundColor = .black
        view.delegate = self
        view.frame = CGRect(x: 0, y: 0, width: collectionView.frame.width, height: 100) //delete this line
        view.item = banners[indexPath.section % banners.count]
        return view
    }

我删除标题视图的行集框架并且它可以正常工作