Я реализовал представление коллекции, как в ссылке: https://iosrevisited.blogspot.com/2017/09/toggle-between-listviewuitableview-and.html.
Я могу переключаться между разметкой сетки и разметкой списка, нажав правый верхний значок, как описано в коде вышеуказанной ссылки.
Для переключения между макетом, я перезагружаю представление коллекции после установки логического значения, которое решит, будет ли это представление списка / представление сетки.Но я не получаю анимацию (как предоставляет приложение Google Drive для iOS).Я пробовал много вещей, таких как добавление collectionView.reloadData () внутри UIView.animate, также пробовал layoutIfNeeded () и т. Д.
Может кто-нибудь дать решение, чтобы оно переключалось с анимацией?
Ниже перечислены мои важные функции просмотра коллекций:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width = view.frame.width
if isListView {
return CGSize(width: width, height: 120)
}else {
return CGSize(width: (width - 15)/2, height: (width - 15)/2)
}
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 5
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 5
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5)
}
Для переключения между макетами я просто перезагружаю Data ().