UICollectionViewFlowLayout
을 사용하여 가로로 스크롤하는보기에서보기 타일을 정렬합니다. 기본적으로, 나는 그들이 광장 UICollectionViewDelegateFlowLayout
를 사용합니다 나는 사각형 타일을 얻을UICollectionViewFlowLayout의 변경 사항 애니메이션
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
var nominalSize = CGSize(width: collectionView.frame.height, height: collectionView.frame.height)
return nominalSize
}
이 방법의 collectionView
의 현재 무엇이든 할 수있는 크기. 그러나, 나는 어떤 타일이 공칭 크기를 수정하는 조건이다, 그래서처럼 보이도록 약간의 진화 :
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
var nominalSize = CGSize(width: collectionView.frame.height, height: collectionView.frame.height)
if someTest(indexPath) {
nominalSize = self.tweakNominalSize(nominalSize)
}
return nominalSize
}
) 리콜 중계 할 위임자와 B) 변경 사항을 애니메이션으로 만드는 방법. 내가 시도 무엇
:
1)
self.myCollectionView.setNeedsLayout()
UIView.animateWithDuration(200.milliseconds) {
self.myCollectionView.layoutIfNeeded()
}
이 아무것도하지 않습니다. 대리자 콜백의 print()
문은 절대로 호출되지 않는다는 것을 나타냅니다.
2)
self.schedulesView.setCollectionViewLayout(
self.schedulesView.collectionViewLayout,
animated: true)
이 또한 아무것도하지 않습니다. 나는 그것이 영리한 것인지 또는 무엇인지 확실하지 않습니다. 어쩌면 그들이 똑같고 선택을 취소 할만큼 똑똑 할 수도 있겠습니까? 이 레이아웃이 발생하는 원인 않습니다
self.schedulesView.startInteractiveTransition(
to: self.schedulesView.collectionViewLayout,
completion: nil)
self.schedulesView.finishInteractiveTransition()
3)! 하지만 전혀 애니메이션이 아닙니다. 갑작스럽게 바뀝니다. 그것은 타일의 오른쪽을 유지하는 것처럼 보입니다. 왼쪽이 아니고 다른 UI가 변경된 후에 두 가지 호출간에 영향을 미쳤습니다.
'performBatchUpdates (_ : 완료 :)'? – matt
답변 양식에 넣으시겠습니까? 아니면 그렇지 않으면 내가 하겠소. :) –