Изменение цвета индикатора активности на черный

Я пытаюсь изменить свой индикатор активности на собственный цвет, например черный. Однако, похоже, он вообще не применяется и имеет стандартный белый цвет.

То, что я сделал, это создание UIView и добавление индикатора активности в качестве подвидного объекта, а затем добавление его в tableFooterView.

Как изменить цвет индикатора активности?

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

Ответы

Ответ 1

Вам нужно установить цвет после установки стиля индикатора активности. Кажется, что установка activityIndicatorViewStyle сбрасывает цвет для activityIndicator

Так просто сделайте это:

// .... 

actInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge
actInd.color = UIColor.blackColor()
footerView.addSubview(actInd)
actInd.startAnimating()
self.tableVIew.tableFooterView = footerView

Это должно работать нормально.

Ответ 2

В документации указано

Если вы установили цвет индикатора активности, он переопределяет цвет предоставляемый свойством activityIndicatorViewStyle.

Итак, сначала нужно установить activityIndicatorViewStyle, а затем установить цвет.

Правильно:

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

Неправильно:

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

Ответ 3

Вот расширение для Swift 4, которое позволяет легко раскрашивать индикатор.

import UIKit

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

Вы называете это следующим образом:

activityIndicator.assignColor(.black)

Вот этот код в действии со случайным таймером для изменения цветов: введите описание изображения здесь

Ответ 4

Вы должны изменить свой цвет после установки стиля индикатора. Все остальное выглядит хорошо для меня.

Ответ 5

версия Swift 3

В основном классе ViewController add activityIndicator:

class ViewController: UIViewController, WKNavigationDelegate {

let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.whiteLarge)

Тогда в 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()

Чтобы удалить ActivityIndicator:

activityIndicator.stopAnimating()