kitoko552.memo

kitoko552のメモ

selectedBackgroundViewを使ってUICollectionViewCellの選択時の色を変える

UICollectionViewCellの場合はselectedBackgroundViewはcontentViewの背後にあるので、contentView.backgroundColorを指定した状態でselectedBackgroundViewを設定しても変化が見えない。

class AnyCell: UICollectionViewCell {
    override func awakeFromNib() {
        super.awakeFromNib()
        contentView.backgroundColor = .white
        // contentViewの方が前にあるのでselectedBackgroundViewの設定は実質無効になる。
        selectedBackgroundView = UIView()
        selectedBackgroundView?.backgroundColor = .lightGray
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        selectedBackgroundView?.frame = bounds
    }
}

なので、contentViewを使わないようにすればOK

class AnyCell: UICollectionViewCell {
    override func awakeFromNib() {
        super.awakeFromNib()
        backgroundColor = .white // cellのbackgroundColorをwhiteに変更
        selectedBackgroundView = UIView()
        selectedBackgroundView?.backgroundColor = .lightGray
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        selectedBackgroundView?.frame = bounds
    }
}