2016-12-14 5 views
2

アニメーションの読み込みにNVActivityIndicatorViewを使用しています。 私は、アクティビティインジケータを追加および削除するこれらの機能を持っています。コレクションビューの読み込み中にヘッダーを隠す

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

私はcollectionViewのロード中に、私は私の問題は、ヘッダで

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

に実装ヘッダーが表示されています。 collectionViewがロードされている間、私はそれを隠したいと思う。

答えて

0

インジケータはあなたがコレクションビューは、操作はとてもそれがviewForSupplementaryElementOfKind経由でヘッダを含むそのUI要素をレイアウトし直すよreloadDataを呼び出すことにより終了したことを知らせるべきでアニメーション表示されている間あなたはおそらく、いくつかの非同期操作を実行している:

その後

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) 
    } 
} 

をあなたが共同で(おそらく活動の指標を隠すどこ:ヘッダが設定されませんので、インジケータが画面に表示されている場合は、必要なもの

まず第一には、collectionView:layout:referenceSizeForHeaderInSectionからCGSize.zeroを返すことです非同期操作のmpletionブロック)、あなたはviewForSupplementaryElementOfKindが再び呼び出されるのでcollectionView.reloadDataを呼び出す必要があります:

// 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:)ありがとう。あなたの答えを更新してください、私はそれをマークします... –

関連する問題