Как замаскировать представления внутри ячейки UICollectionView без обрезки теней - PullRequest
0 голосов
/ 20 ноября 2018

Моя цель - сделать так, чтобы представления, отображаемые при касании ячейки, были скрыты под границами ячейки при ее расширении и отображались при расширении ячейки, не обрезая тень ячейки.Представления, отображаемые за пределами ячейки, включают в себя метки для класса (Calculus 3 и Econ 101), поле для заметок и серую линию.

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    if weekTasks[indexPath.section].count == 0 {
        let emptyCell = collectionView.dequeueReusableCell(withReuseIdentifier: "emptyCellID", for: indexPath) as! EmptyCell
        return emptyCell
    } else {
        let assignmentCell = collectionView.dequeueReusableCell(withReuseIdentifier: "assignCellID", for: indexPath) as! AssignmentCell
        assignmentCell.myAssignment = weekTasks[indexPath.section][indexPath.item]
        assignmentCell.contentView.backgroundColor = UIColor.clear
        assignmentCell.layer.shadowOffset = CGSize(width: 0 ,height: 1)
        assignmentCell.layer.shadowRadius = 4
        return assignmentCell
    }
}

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    do {
        let cell = collectionView.cellForItem(at: indexPath)
        cell?.backgroundColor = UIColor.white
        cell?.layer.cornerRadius = 12
        let animation = CABasicAnimation(keyPath: "shadowOpacity")
        animation.fromValue = 0
        animation.toValue = 0.2
        animation.duration = 0.3
        cell?.layer.add(animation, forKey: animation.keyPath)
        cell?.layer.shadowOpacity = 0.2
    }

    collectionView.performBatchUpdates(nil, completion: nil)
}

Следующее находится внутри класса ячеек представления моей коллекции:

override var isSelected: Bool {
    didSet{
        if self.isSelected
        {
            self.addSubview(notesField)
            notesField.frame = CGRect(x: 50, y: 38, width: screenWidth - 60, height: 30)

            self.addSubview(seperator)
            seperator.frame = CGRect(x: 24, y: 71, width: self.frame.width - 48, height: 0.5)

            self.addSubview(classButton)
            classButton.frame = CGRect(x: 10, y: 80, width: 60, height: 20)
        }
    }
}

The response I get.

...