У меня есть UICollectionViewCompositionalLayout. В DidSelectItemAt начинаю загрузку файла. Внутри элементов просмотра коллекции у меня есть метка, показывающая процент загруженного файла. Я использую этот код для этого и для обновления своей ячейки:
Но когда мой файл загружается, и я использую этот метод ReloadiTem (IndexPath: IndexPath) для обновления ячейки, я получаю немного замораживания при прокрутке сбора и замораживает, если Я снова нажимаю на ячейку, которая в настоящее время показывает прогресс загрузки. Моя проблема находится внутри этого метода ReloadItem (IndexPath: IndexPath) . Но как решить эту проблему с помощью обновления ячейки? зафиксированный. Но если я снова нажимаю на ячейку, которая в настоящее время показывает прогресс загрузки, у меня есть странное поведение. В классе ячейки у меня есть этот код, чтобы показать анимацию: < /p>
class DCell: UICollectionViewCell, SelfConfiguringCell {
private func animateScale(to scale: CGFloat, duration: TimeInterval) {
UIView.animate( withDuration: duration, delay: 0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.5, options: [], animations: {
self.stackView.transform = .init(scaleX: scale, y: scale)
self.textView.transform = .init(scaleX: scale, y: scale)
}, completion: nil)
}
override func touchesBegan(_ touches: Set, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
animateScale(to: 0.9, duration: 0.4)
}
override func touchesEnded(_ touches: Set, with event: UIEvent?) {
super.touchesEnded(touches, with: event)
animateScale(to: 1, duration: 0.38)
isSelected.toggle()
}
override func touchesCancelled(_ touches: Set, with event: UIEvent?) {
super.touchesCancelled(touches, with: event)
animateScale(to: 1, duration: 0.38)
isSelected.toggle()
}
}
< /code>
Но если я снова нажимаю на ячейку, которая в настоящее время показывает прогресс загрузки, мои мобильные палочки. Это становится меньше других. И когда нажимает анимация, не появится. didselectiTemat
не вызван. Но для других ячеек анимация работает нормально, прежде чем прогресс начнет показывать. Я не понимаю, почему это происходит, и didselectiTemat не называется
У меня есть UICollectionViewCompositionalLayout. В DidSelectItemAt начинаю загрузку файла. Внутри элементов просмотра коллекции у меня есть метка, показывающая процент загруженного файла. Я использую этот код для этого и для обновления своей ячейки: [code]func createDataSource() { dataSource = UICollectionViewDiffableDataSource(collectionView: collectionView) { collectionView, indexPath, item in switch self.sections[indexPath.section].identifier {
case "cell":
let cell = self.configure(DCell.self, with: item, for: indexPath)
if indexPath.row < self.items.count { let item = self.items[indexPath.row] switch item.state { case .downloading: cell.title.text = "\(String(format: "%.f%%", item.progress * 100))" case .completed: cell.title.text = "Completed" case .failed: cell.title.text = "Fail" case .none: break } } return cell
var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections(sections) for section in sections { snapshot.appendItems(section.item, toSection: section) } dataSource?.apply(snapshot)
snapshot.reloadItems([needReloadItem]) dataSource?.apply(snapshot, animatingDifferences: false) } [/code] код из DownloadManager для отслеживания прогресса: [code]func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) { if totalBytesExpectedToWrite > 0 { if let onProgress = onProgress { calculateProgress(session: session, completionHandler: onProgress) } } }
private func calculateProgress(session : URLSession, completionHandler : @escaping (Int, Int, Float) -> ()) { session.getTasksWithCompletionHandler { (tasks, uploads, downloads) in let progress = downloads.map({ (task) -> Float in if task.countOfBytesExpectedToReceive > 0 { return Float(task.countOfBytesReceived) / Float(task.countOfBytesExpectedToReceive) } else { return 0.0 } }) completionHandler(session.getSessionDescription(), Int(session.accessibilityHint!)!, progress.reduce(0.0, +)) } } [/code] Но когда мой файл загружается, и я использую этот метод ReloadiTem (IndexPath: IndexPath) для обновления ячейки, я получаю немного замораживания при прокрутке сбора и замораживает, если Я снова нажимаю на ячейку, которая в настоящее время показывает прогресс загрузки. Моя проблема находится внутри этого метода ReloadItem (IndexPath: IndexPath) . Но как решить эту проблему с помощью обновления ячейки? зафиксированный. Но если я снова нажимаю на ячейку, которая в настоящее время показывает прогресс загрузки, у меня есть странное поведение. В классе ячейки у меня есть этот код, чтобы показать анимацию: < /p> [code]class DCell: UICollectionViewCell, SelfConfiguringCell {
} < /code> Но если я снова нажимаю на ячейку, которая в настоящее время показывает прогресс загрузки, мои мобильные палочки. Это становится меньше других. И когда нажимает анимация, не появится. didselectiTemat [/code] не вызван. Но для других ячеек анимация работает нормально, прежде чем прогресс начнет показывать. Я не понимаю, почему это происходит, и didselectiTemat не называется
Я могу утверждать значение массива, используя выражения коллекции в NUnit, следующим образом:
var arr = new[] { 1, 2, 3 };
Assert.That(arr, Is.EquivalentTo((int[]) ));
Я бы хотел написать
var arr = new[] { 1, 2, 3 };
Assert.That(arr,...
Я могу утверждать значение массива, используя выражения коллекции в NUnit, следующим образом:
var arr = new[] { 1, 2, 3 };
Assert.That(arr, Is.EquivalentTo((int[]) ));
Я бы хотел написать
var arr = new[] { 1, 2, 3 };
Assert.That(arr,...