UIActivityIndicatorView не отображается в моем UITableViewCell - PullRequest
0 голосов
/ 03 июня 2019

Я просто хочу отобразить UIActivityIndicatorView в UITableViewCell, но он не появляется

UIActivityIndicatorView появляется, когда я помещаю его в основной поток, но другие виды исчезают.И это странно, потому что UIActivityIndicatorView уже находится в главном потоке, прежде чем я добавлю его вручную

   override init(style: UITableViewCellStyle, reuseIdentifier: String?) 
   {
      super.init(style: style, reuseIdentifier: reuseIdentifier)

      // Set subviews constraints
      self._setMainContainerViewConstraints(container: self.contentView)
   }

   /**
    ** MARK: - Private constraints methods
    */

   private func _setMainContainerViewConstraints(container: UIView) {
      self._mainContainerView.backgroundColor = .blue


      self._mainContainerView.translatesAutoresizingMaskIntoConstraints = false
      self.contentView.addSubview(self._mainContainerView)

      // Set borders constraints
      self._mainContainerView.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant: 16).isActive = true
      self._mainContainerView.leftAnchor.constraint(equalTo: self.contentView.leftAnchor, constant: 16).isActive = true
      self._mainContainerView.rightAnchor.constraint(equalTo: self.contentView.rightAnchor, constant: -16).isActive = true
      self._mainContainerView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor, constant: -16).isActive = true

      // Add subviews
      self._setActivityIndicatorConstraints()
   }

   private func _setActivityIndicatorConstraints() {
      if Thread.isMainThread {
         print("Main thread")
      }

      self._activityIndicator.backgroundColor = .green


      self._activityIndicator.translatesAutoresizingMaskIntoConstraints = false
      self._mainContainerView.addSubview(self._activityIndicator)

      // Set borders constraints
      self._activityIndicator.topAnchor.constraint(equalTo: self._mainContainerView.topAnchor, constant: 16).isActive = true
      self._activityIndicator.leftAnchor.constraint(equalTo: self._mainContainerView.leftAnchor, constant: 16).isActive = true
      self._activityIndicator.rightAnchor.constraint(equalTo: self._mainContainerView.rightAnchor, constant: -16).isActive = true
      self._activityIndicator.bottomAnchor.constraint(equalTo: self._mainContainerView.bottomAnchor, constant: -16).isActive = true

      self._activityIndicator.heightAnchor.constraint(equalToConstant: 30).isActive = true

      self._mainContainerView.bringSubview(toFront: self._activityIndicator)

      self._activityIndicator.startAnimating()
      self._activityIndicator.isHidden = false
   }

«Основной поток» появится в консоли, поэтому мне не нужно вводить его UIActivityIndicatorView вручную восновной поток

Результат без помещения UIActivityIndicatorView вручную в основной поток:

результат без основного потока

Результат при установке UIActivityIndicatorView вручную к основному потоку, как это:

   DispatchQueue.main.async {
      self._setActivityIndicatorConstraints()
   }

результат с основным потоком

...