Я просто хочу отобразить 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()
}
результат с основным потоком