UIActivityIndicatorView не вращается в UICollectionViewCell

У меня есть пользовательская ячейка, которая загружается в нижней части моего вида коллекции. Его единственная задача – отобразить представление индикатора активности, которое происходит, когда приложение выполняет новый рабочий вызов.

Поэтому я добавил его в ячейку следующим образом:

BBLoaderCell *loaderCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LoaderCell" forIndexPath:indexPath]; UIActivityIndicatorView * activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; activityIndicator.hidesWhenStopped = YES; activityIndicator.hidden = NO; activityIndicator.center = loaderCell.imageView.center; activityIndicator.tag = 10; [loaderCell.imageView addSubview:activityIndicator]; [activityIndicator startAnimating]; return loaderCell; 

Это показывает индикатор активности в последней ячейке моего представления – однако он не вращается. Есть идеи?

Решение найдено

Согласно комментариям, это была проблема с потоками. Я также принял предложение переместить код в пользовательский файл nib для ячейки.

здесь находится реорганизованный код:

 BBLoaderCell *loaderCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LoaderCell" forIndexPath:indexPath]; loaderCell.backgroundColor = [UIColor clearColor]; if (self.loadingMore == NO){ dispatch_async(dispatch_get_main_queue(), ^{ activityIndicator.hidden = YES; [loaderCell.spinner stopAnimating]; }); } else if (self.loadingMore == YES){ dispatch_async(dispatch_get_main_queue(), ^{ activityIndicator.hidden = NO; [loaderCell.spinner startAnimating]; }); } return loaderCell; 

Это работает так, как мне нужно.

Спасибо, парни!

Я думаю, что это может иметь какое-то отношение к потоковой передаче (например, пользовательский интерфейс основного потока не готов к анимации индикатора). Вы можете попробовать что-то вроде следующего:

[activityIndicator performSelector:@selector(startAnimating:) withObject:nil afterDelay:1];

Это всего лишь возможное предложение, но вы должны попробовать разные варианты и проверить, какой из них заставляет анимацию на основной поток правильно и своевременно. Другой вариант:

 dispatch_async(dispatch_get_main_queue(), ^{ [activityIndicator startAnimating]; }); 
  • Как определить, когда отображается UICollectionViewCell?
  • Расположение ячеек UICellView в быстрых
  • UIColllectionView не соблюдает макет
  • Добавить кнопку в конце представления коллекции в раскадровке
  • Ячейка исчезает после прокрутки 2 - 3 раза в UICollectionView
  • UITableView && UICollectionView в одном контроллере?
  • Ошибка iOS 10: UICollectionView получил атрибуты макета для ячейки с пути указателя, который не существует
  • как получить 1 ширину ширины пикселя в ячейках UICollectionView? (код предоставлен)
  • iOS: управление пользовательским интерфейсом, когда изображения загружаются в отдельный поток
  • Добавить UICollectionView в UICollectionViewCell
  • Центрирование клеток UICollectionView в контейнере
  • Давайте будем гением компьютера.