UICollectionViewCell - содержимое не анимируется вместе с содержимым ячейки.

Проблема выглядит так:http://i.imgur.com/5iaAiGQ.mp4 (красный - это цвет cell.contentView)

Вот код:https://github.com/nezhyborets/UICollectionViewContentsAnimationProblem

Текущее состояние: Содержимое contentView UICollectionViewCell не анимируется вместе с изменением кадра contentView. Он получает размер сразу без анимации.

Другие проблемы, возникающие при выполнении задачи: ContentView также не анимировал наряду с изменением кадра ячейки, пока я не сделал это в подклассе UICollectionViewCell:

override func awakeFromNib() {
    super.awakeFromNib()

    //Because contentView won't animate along with cell
    contentView.frame = bounds
    contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}

Другие заметки: Вот код, участвующий в анимации размера ячейки

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    self.selectedIndex = indexPath.row

    collectionView.performBatchUpdates({
        collectionView.reloadData() 
    }, completion: nil)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let isSelected = self.selectedIndex == indexPath.row
    let someSize : CGFloat = 90 //doesn't matter
    let sizeK : CGFloat = isSelected ? 0.9 : 0.65
    let size = CGSize(width: someSize * sizeK, height: someSize * sizeK)

    return size
}

Я получаю те же результаты при использованииcollectionView.setCollectionViewLayout(newLayout, animated: true)и нет никакой анимации при использованииcollectionView.collectionViewLayout.invalidateLayout() вместоreloadData() inside batchUpdates.

ОБНОВИТЬ Когда я печатаюimageView.constraints внутри UICollectionView'swillDisplayCell метод, он печатает пустой массив.

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
    for view in cell.contentView.subviews {
        print(view.constraints)
    }

    //Outputs
    //View: <UIImageView: 0x7fe26460e810; frame = (0 0; 50 50); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x608000037280>>
    //View constraints: []
}

Ответы на вопрос(3)

Ваш ответ на вопрос