Сохранение циклов в анимации Swift 4 - PullRequest
0 голосов
/ 06 декабря 2018

Я использую Xcode 10.1 и я неопытный программист в Swift 4.

Я могу выполнить приведенный ниже код (анимировать ячейку UICollectionView при выборе) без предупреждений или ошибок:

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    guard let cell = collectionView.cellForItem(at: indexPath) as? CompanyCollectionViewCell else { return }

    UIView.animate(withDuration: 0.1, delay: 0, options: [.curveEaseOut], animations: {
        cell.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
    }) { (finished) in
        UIView.animate(withDuration: 0.08, delay: 0, options: [.curveEaseIn], animations: {
            cell.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
        }, completion: { (finished) in
            DispatchQueue.main.async {
                self.performSegue(withIdentifier: "showTradeView", sender: self)
            }
        })
    }
}

... но меня беспокоит сохранение циклов внутри замыканий анимации.

Нужно ли использовать [unowned self] в последнем замыкании 'завершение:'?Нужно ли использовать [неизвестную ячейку] при первом закрытии анимации?

и, наконец (немного не связано, извините). Нужно ли вызывать код executeSegue внутри DispatchQueue.main, так как кажется, что он очень рад работать безэто?

Любая помощь очень ценится.

...