У меня есть одно горизонтальное представление UICollection, где мне нужно преобразовать или уменьшить размер невыбранных ячеек. Я задал общий размер в функции делегата sizeForItem для всех ячеек. И я задал минимальный интервал между ячейками. Но проблема при повторном масштабировании ячейки, скажем (0,8 масштабирования), пространство между ячейками становится шире и не поддерживает общий размер.
Вот несколько фрагментов кода для collectionView,
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 400, height: 400)
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 24, bottom: 24, right: 24)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 20
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as? SomeCellClass
cell.loadUI()
if indexPath == selectedIndex {
cell?.performScaleTransformation(reScale: false)
}
else{
cell?.performScaleTransformation(reScale: true)
}
}
return cell ?? UICollectionViewCell()
}
///Эта функция находится в классе Cell SomeCellClass: UICollectionviewCell
func performScaleTransformation(reScale: Bool) {
if reScale {
UIView.animate(withDuration: 0.3, delay: 0.0, options: [ .curveEaseOut], animations: {
self.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
}, completion: nil)
}
else {
UIView.animate(withDuration: 0.3, delay: 0.0, options: [ .curveEaseOut], animations: {
self.transform = .identity
}, completion: nil)
}
}
Ниже приведен вывод, который я получаю с этим кодом,
На приложенном скриншоте видно, как меняются промежутки между ячейками.