Добавить фоновый вид в ячейку коллекции - PullRequest
0 голосов
/ 21 апреля 2020

Я использую UITableViewCell.xib для настройки ячейки. Я отображаю текст и картинки, вид добавлен на фоне ячеек. Всего 7 ячеек, и в одной ячейке мне нужно заменить этот фон другим UIView.xib. Я пытался реализовать это, но это не дало мне результатов, фон на всех ячейках одинаков. Или как я могу изменить свойство ячейки фонового представления на свой View.xib

CollectionCell.swift

import UIKit

class CollectionViewCell: UICollectionViewCell {

    static var identifier: String = "CollectionViewCell"

    @IBOutlet weak var icon: UIImageView!
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var customBackgoundView: UIView!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code

    }
}

CustomeView.swift

import UIKit

class CustomBackgroundView: UIView {

    @IBOutlet weak var contentView:UIView!


    //MARK: Override
    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
    }

    private func commonInit() {
        Bundle.main.loadNibNamed("CustomBackgroundView", owner: self, options: nil)
        addSubview(contentView)
        contentView.frame = self.bounds
    }
}

CollectionView.swift let background = CustomBackgroundView ()

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CollectionViewCell.identifier, for: indexPath) as? CollectionViewCell


            // here i'm doing something wrong because nothing changes
  if indexPath.row == 3 {
        cell?.customBackgoundView = background
        cell?.contentView.addSubview(background)
    }
        return cell ?? UICollectionViewCell()
    }

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

проблема в том, что если вы хотите добавить что-то поверх ячейки, оно должно добавить свой контент-просмотр. Итак, попробуйте использовать с contentView

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CollectionViewCell.identifier, for: indexPath) as? CollectionViewCell
 if indexPath.row == 3 {
                 var backgroundView = Bundle.main.loadNibNamed("CustomBackgroundView", owner: self, options: nil)![0] as! UIView
             backgroundView.frame = cell.contentView.frame
            cell.contentView.addSubview(yourCustomView)
            cell.contentView.sendSubviewToBack(yourCustomView)
        return cell!
                } else {
                    return cell ?? UICollectionViewCell()
                }
0 голосов
/ 21 апреля 2020

Вам нужно загрузить UIView на indexPath.row == 3 следующим образом

let myView = Bundle.main.loadNibNamed("yourXibView", owner: nil, options: nil)![0] as! UIView

, а затем добавить в фоновое представление основного вида представления вашей коллекции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...