2016-11-07 2 views
1

J'ai un bouton personnalisé et je dois afficher un indicateur d'activité au lieu de l'étiquette de titre après avoir appuyé sur le bouton. Pour masquer TitleLabel J'utiliseIndicateur d'activité sur UIButton

self.titleLabel.layer.opacity = 0.0f; 

Dans la méthode, où l'indicateur commence animant

- (void)startAnimating { 
[self bringSubviewToFront: self.spinner]; 
self.titleLabel.layer.opacity = 0.0f; 
[self.spinner startAnimating]; 

self.titleLabel.layer.opacity = ([self isAnimating]) ? 0.0f : 1.0f; 
[self setNeedsDisplay]; 

}

Il fonctionne, mais pas pour une longue prise. Lorsque j'utilise un appui long, l'étiquette du titre n'est pas masquée, un indicateur d'activité apparaît au-dessus du titre. J'ai essayé de définir la couleur du titre dans "startAnimating", ça marche, mais je pense que ce n'est pas une bonne solution. Si quelqu'un pouvait aider, ce serait vraiment apprécié :)

+0

pourquoi ne pas vous utilisez 'self.titleLabel.hidden = true'? –

+0

Ça ne marche pas aussi. C'était le premier que j'avais essayé de faire – Anna

Répondre

2

Essayez cette (rapide):

@IBOutlet var buttonTap: UIButton! 
var indicator = UIActivityIndicatorView() 

@IBAction func buttonTap(_ sender: AnyObject) { 
    buttonTap.setTitle("", for: .normal) 
    indicator.center = buttonTap.center 
    indicator.color = UIColor.black 
    indicator.startAnimating() 
}