Переключение между представлением списка и представлением сетки в UICollectionView - PullRequest
0 голосов
/ 29 сентября 2018

Я реализовал представление коллекции, как в ссылке: 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 ().

...