2017-07-24 2 views
1

J'ai un UICollectionView avec l'extraction normale pour rafraîchir l'implémentation, mais de façon ou d'autre le spinner et le texte «pull to refresh» apparaissent au-dessus des éléments de la collection;UIRefreshControl apparaît en haut des éléments de la collection plutôt que derrière

Comment puis-je faire derrière les éléments?

Voici comment ajouter le UIRefreshControll au UICollectionView

let refreshControl = UIRefreshControl() 
refreshControl.attributedTitle = NSAttributedString(string: "Pull down to refresh") 
refreshControl.addTarget(self, action: #selector(pullToRefresh), for: UIControlEvents.valueChanged) 
collectionView?.refreshControl = refreshControl 

Répondre

5

La façon dont je comprendre cela est de changer le refreshControllzPosition être derrière chaque point de vue avec les éléments suivants:

refreshControl.layer.zPosition = -1 

Espoir Cela aide tout le monde.

+0

Note: fix actuelle ne fixe pas la position de vue d'en-tête de la table (collection) Voir pendant le défilement. La vue d'en-tête se déplace verticalement sur la hauteur du contrôle d'actualisation. Utilisez setRefreshControl au lieu de addSubview. Fonctionne sur> = iOS 10 –

1

Essayez ceci:

@IBOutlet weak var collectionView: UICollectionView! 

var refresher:UIRefreshControl! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    let refresher = UIRefreshControl() 
    self.collectionView!.alwaysBounceVertical = true 
    self.refresher.tintColor = UIColor.red 
    self.refresher.addTarget(self, action: #selector(loadData), for: .valueChanged) 
    self.collectionView!.addSubview(refresher) 
} 

func loadData() { 
    //code to execute during refresher 
     . 
     . 
     . 
    stopRefresher()   //Call this to stop refresher 
} 

func stopRefresher() { 
    self.refresher.endRefreshing() 
}