Моя цель - сделать так, чтобы представления, отображаемые при касании ячейки, были скрыты под границами ячейки при ее расширении и отображались при расширении ячейки, не обрезая тень ячейки.Представления, отображаемые за пределами ячейки, включают в себя метки для класса (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)
}
}
}