2017-12-04 21 views
4

컬렉션보기가 있고 항목을 약간 삽입하여 항목을 변경하면 기본 레이아웃이 동시에 사라집니다. 다른 것들을 하나씩 사라지게 할 가능성이 있습니까?iOS - UICollectionView - 한 번에 여러 항목을 삽입 할 때 어떻게 동시에 여러 항목을 하나씩 사라지게 할 수 있습니까?

UICollectionViewLayout 서브 클래 싱에 대해 생각하고 있었지만 그렇게 작동하는지 확신 할 수 없습니다.

한번에 여러 개의 삽입이 발생하지 않도록 논리를 추가해야합니까? (그래서 나는 아이템을 삽입하고 잠시 기다렸다가 두 번째 아이템을 삽입한다 ... 수동으로하는 것) 더 좋은 방법이 있어야한다. 당신이 한 번에 하나씩 페이드하려면 내가, 당신이 지연 다음 모델에 하나를 추가 한 항목 있음을 다시로드해야 할거야 어떤 도움

답변

3

에 대한

감사하겠습니다 (예 : asyncAfter를) 및 다음 일을하십시오. 한 번에 모든 모델을 모델에 추가 할 수는 없으며 컬렉션보기의 개별 항목을 다시로드하기 만하면됩니다. 모델 업데이트와 컬렉션 뷰의 해당 항목 다시로드를 모두 지연해야합니다. 예컨대 :

private func append(_ objectsToAdd: [Foo]) { 
    for i in 0 ..< objectsToAdd.count { 
     DispatchQueue.main.asyncAfter(deadline: .now() + Double(i) * 0.25) { 
      self.objects.append(objectsToAdd[i]) 
      self.collectionView?.insertItems(at: [IndexPath(item: self.objects.count - 1, section: 0)]) 
     } 
    } 
} 

그 수율은 :

enter image description here

UICollectionViewLayout의 어떤 서브 클래스가 필요하지 않습니다.

+0

흠, 내가 완전히 피하려고했지만. 내가 말했듯이 나는 그것을 수동으로하고 싶지 않다. 다른 방법이 없다면 불행 할 것입니다. – Quantm

+0

네, 이해 합니다만, AFAIK, 애니메이션을 지연시킬 방법이 없습니다. 수동으로 모델 업데이트와 상응하는'insertItems '만 지연시킨다. – Rob

+0

답장을 보내 주시면 감사하겠습니다 (코드 스 니펫은 필요하지 않지만이 방법을 알고 있으므로 더 나은 방법을 찾고 있습니다.) 어쨌든 :)). 나는 조금 기다려야한다. (아마도 누군가는 더 편리한 방법을 택할 것이다.) 그러나 나는 이것을 받아 들일 것이다. – Quantm