Попробуйте это:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let items = collectionView.indexPathsForSelectedItems
let width = view.frame.width
if (items?.contains(indexPath))! {
return CGSize(width: width, height: 50) //example: your selected height = 50
} else {
let height = width * 9 / 16
return CGSize(width: width, height: height + 50 + 50)
}
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
collectionView.collectionViewLayout.invalidateLayout()
}
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
collectionView.collectionViewLayout.invalidateLayout()
}
Если вы хотите множественный выбор, вам нужно написать этот код, чтобы включить множественный выбор где-то вроде viewDidLoad ()
collectionView?.allowsMultipleSelection = true
Я надеюсь, что это будет полезно для вас.