2015-04-17 12 views
15

Sto provando a cambiare l'indicatore di attività in un colore personalizzato come nero. Tuttavia sembra non applicare affatto e ha ancora il colore bianco standard.Cambiare il colore dell'indicatore di attività in nero

Quello che ho fatto è creare un UIView e aggiunto un indicatore di attività come subView e poi aggiunto a tableFooterView.

Come posso cambiare il colore dell'indicatore di attività?

viewDidLoad:

let footerView = UIView(frame: CGRectMake(0, 0, self.view.frame.size.width, 40)) 
    footerView.backgroundColor = UIColor(rgba: "#f6f7f9") 
    var actInd: UIActivityIndicatorView = UIActivityIndicatorView() 
    actInd.color = UIColor.blackColor() 
    actInd.frame = CGRectMake(self.view.frame.size.width/2-10, 0.0, 20.0, 20.0); 

    actInd.activityIndicatorViewStyle = 
     UIActivityIndicatorViewStyle.WhiteLarge 
    footerView.addSubview(actInd) 
    actInd.startAnimating() 
    self.tableVIew.tableFooterView = footerView 
+0

Si effettivamente fatto proprio utilizzando la proprietà del colore. Basta impostare lo stile dell'indicatore prima di aggiungere colore. – Akaino

risposta

40

È necessario impostare il colore dopo aver impostato l'indicatore di stile di attività. Sembra che l'impostazione del activityIndicatorViewStyle ripristina il colore per il activityIndicator

Quindi solo fare questo:

// .... 

actInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.whiteLarge 
actInd.color = UIColor.black 
footerView.addSubview(actInd) 
actInd.startAnimating() 
self.tableVIew.tableFooterView = footerView 

Questo dovrebbe funzionare bene.

+0

Grazie Catalina! hai salvato la mia giornata;) –

+0

Sei il benvenuto :) Felice, ho potuto aiutare –

8

La documentazione

Se si imposta un colore per un indicatore di attività, è le sostituzioni il colore fornito dalla proprietà activityIndicatorViewStyle.

Quindi è necessario impostare prima il activityIndicatorViewStyle e quindi impostare il colore.

corretta:

actInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge 
actInd.color = UIColor.blackColor() 

Sbagliato:

actInd.color = UIColor.blackColor() 
actInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge 
+0

grazie, lavoro perfetto per me !!! –

+0

grazie per la risposta documentata – vmeyer

0

si dovrebbe cambiare il colore dopo aver impostato lo stile dell'indicatore. Tutto il resto sembra a posto per me.

0

Swift 3 versione

Nella classe principale ViewController aggiungere activityIndicator:

class ViewController: UIViewController, WKNavigationDelegate { 

let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge) 

Poi nel viewDidLoad():

override func viewDidLoad() { 
super.viewDidLoad() 

activityIndicator.color = UIColor.black 
activityIndicator.center = CGPoint(x: view.bounds.size.width/2, y: view.bounds.size.height/2) 
view.addSubview(activityIndicator) 
activityIndicator.startAnimating() 

Per rimuovere activityIndicator:

activityIndicator.stopAnimating() 
3

Ecco un'estensione per Swift 4 che semplifica il colore dell'indicatore.

import UIKit 

extension UIActivityIndicatorView { 
    func assignColor(_ color: UIColor) { 
     activityIndicatorViewStyle = .whiteLarge 
     self.color = color 
    } 
} 

si chiamano in questo modo:

activityIndicator.assignColor(.black) 

Ecco il codice in azione, con un timer casuale per cambiare i colori: enter image description here

Problemi correlati