Я пытаюсь создать настраиваемый класс представления, который представляет собой всплывающее окно с UICollectionView на нем. Я создал функции для анимации представления и вывода, но на самом деле работает только функция анимации вывода.
Я устанавливаю следующие ограничения ...
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
func commonInit(){
...
self.addSubview(collectionView)
collectionView.bottomAnchor.constraint(equalTo: self.safeAreaLayoutGuide.bottomAnchor).isActive = true
collectionView.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true
collectionView.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true
collectionView.heightAnchor.constraint(equalTo: self.heightAnchor, multiplier: 0.7).isActive = true
...
self.animateIn()
}
Затем, чтобы обрабатывать анимацию, которую я использую следующим образом ...
func animateIn(){
self.collectionView.transform = CGAffineTransform(translationX: 0, y: self.collectionView.frame.height)
self.blurredBackgroundView.alpha = 0
UIView.animate(withDuration: 0.5, animations: {
self.blurredBackgroundView.alpha = 1
self.collectionView.transform = .identity
})
}
И функция animateOut (которая работает) ...
func animateOut(){
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 1, options: .curveEaseIn, animations: {
self.collectionView.transform = CGAffineTransform(translationX: 0, y: self.collectionView.frame.height)
self.blurredBackgroundView.alpha = 0
}) { (complete) in
if complete {
self.removeFromSuperview()
}
}
}
Но исходный CGAfineTransform не работает поэтому при первом появлении вид появляется в своей окончательной позиции. Я сбит с толку, так как он отлично работает с функцией animateOut, которая вызывается при нажатии кнопки, чтобы закрыть всплывающее окно.
Кто-нибудь может сказать мне, что я делаю не так? Я чувствую, что должно быть что-то основное. c Мне не хватает.
Спасибо