2015-03-16 1 views
1

Je rencontre une sorte de scintillement avec mon implémentation de UIRefreshControl sous iOS 8. Chaque fois que je viens au sommet de ma tableView (c'est-à-dire quand l'application vient juste de commencer) je vois le scintillement montré dans le gif au dessous de. Cela ne se produit pas à n'importe quel moment, je viens en haut de la table jusqu'à ce que cette vue est chargée à nouveau, donc après avoir fait quelque chose dans une autre vue de l'application ou le redémarrer tout à fait.UIRefreshControl flicker

screen recording of flicker

Voici le code dans le viewDidLoad() de ma demande: fonction

let refreshControl = UIRefreshControl() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Doing this here to prevent the UIRefreshControl sometimes looking messed up when waking the app 
    self.refreshControl.endRefreshing() 

    updateData() 

    refreshControl.backgroundColor = UIColor(hue: 0.58, saturation: 1.0, brightness: 0.43, alpha: 1.0) 
    refreshControl.tintColor = UIColor.whiteColor() 
    refreshControl.addTarget(self, action: "updateData", forControlEvents: UIControlEvents.ValueChanged) 
    tableView.addSubview(refreshControl) 
} 

La refreshControl est déclarée en dehors de la viewDidLoad() que je veux appeler la méthode endRefreshing de l'intérieur ma fonction updateData(). Cela semblait être la façon évidente de le faire.

Répondre

4

j'ai pu résoudre ce problème en changeant la ligne suivante

tableView.addSubview(refreshControl) 

à

tableView.insertSubview(refreshControl, atIndex: 0) 

Merci à ce commentaire: UIRefreshControl without UITableViewController

+0

même avec cela, le refreshesControl apparaît au-dessus de la table ios à partir 11.x (9 ios travaux fin) –

0

Changer la couleur de fond de la vue parent du UIRefreshControl à soit identique à la couleur d'arrière-plan du UIRefreshControl.

Quelque chose comme:

refreshControl.Superview.BackgroundColor = refreshControl.BackgroundColor