2016-12-14 4 views
2

Я использую NVActivityIndicatorView для загрузки анимации. У меня есть функция для добавления и удаления индикатора активности.скрыть заголовок во время просмотра коллекции

func addActivityIndicator() {} 
func startActivityIndicatorView() {} 
func stopActivityIndicatorView() {} 

У меня есть заголовок, который я реализуемый

override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { 
    let headerView = ... 
    return headerView 
} 

Моя проблема заголовка отображается в то время как CollectionView загружается. Я хочу скрыть его, пока загружается collectionView.

ответ

0

Вы, вероятно, выполнять некоторые асинхронные операции, пока индикатор анимации, так что вы должны позволить представление коллекции знать, что операция завершается вызовом reloadData поэтому он будет повторно расположение его элементов пользовательского интерфейса, включая заголовки с помощью viewForSupplementaryElementOfKind:

во-первых, то, что вам нужно, чтобы вернуться CGSize.zero из collectionView:layout:referenceSizeForHeaderInSection, если индикатор на экране, так что заголовок не будет заполняться:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { 
    if indicatorView.isAnimating { 
    return CGSize.zero 
    } else { 
    return CGSize(width: collectionView.frame.width, height: 50) 
    } 
} 

Тогда где бы вы скрыть индикатор активности (возможно, в сотрудничестве mpletion блок асинхронной операции), вы должны вызвать collectionView.reloadData так viewForSupplementaryElementOfKind будет называться снова:

// operation is done, refreshing the content.. 
self.stopActivityIndicatorView() 
self.collectionView.reloadData() 
... 
+0

viewForSupplementaryElementOfKind не принимает возврат ноль. –

+0

О, извините, я полностью пропустил это, но неважно. Если индикатор анимируется, вам нужно вернуть 'CGSize.zero' для высоты заголовка в соответствующем методе делегата. Оставьте 'viewForSupplementaryElementOfKind' как есть и просто обновите [' referenceSizeForHeaderInSection'] (https://developer.apple.com/reference/uikit/uicollectionviewdelegateflowlayout/1617702-collectionview?language=objc), используя ту же идею. – ozgur

+0

eyvallah Özgür :) Спасибо. Пожалуйста, обновите свой ответ, я отметю его ... –