Я работаю над отображением всплывающего окна, которое должно отображаться ниже для выбранной ячейки.
У меня два контроллера вида, оба содержат UICollectionView
. Поэтому, когда я выбираю ячейку из первого контроллера просмотра, я хочу отобразить всплывающее окно с анимацией точно под выбранной ячейкой.
Я попробовал следующий код, чтобы отобразить его.
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if self.signupFirstStepVC != nil {
self.signupFirstStepVC?.view.removeFromSuperview()
self.signupFirstStepVC = nil
}
let cell = collectionView.cellForItem(at: indexPath) as! MainCategoryCVC
collectionView.scrollToItem(at: indexPath, at: .top, animated: true)
self.signupFirstStepVC = SignupFirstStepVC.viewController()
let viewFrame = self.signupFirstStepVC?.view.frame
self.signupFirstStepVC?.view.frame = CGRect(x: viewFrame!.origin.x, y: cell.lblCategoryName.frame.maxY, width: collectionView.frame.size.width, height: collectionView.frame.size.height - 100)
UIView.transition(from: cell, to: self.signupFirstStepVC!.view, duration: 0.5, options: .transitionCrossDissolve) { (success) in
self.view.addSubview(self.signupFirstStepVC!.view)
}
}
Этот код работал, но не отображал должным образом, как я ожидал.
Выход:
Вы можете видеть на изображении выше, мое всплывающее окно добавлено, но начало координат начинается с UICollectionView
, а не cell
* lblCategoryName
* maxY
.
Ожидаемое