Это один из подходов, который вы можете использовать для достижения этой цели:
Возьмите 2 контейнера UIView
и 2 строки (вы можете взять UIView
снова) и 2 UIImageView
(или любое для зеленого вида). Так что ваш StoryBoard
должен выглядеть так:
Убедитесь, что ваши контейнерные представления clips to bound
(вы можете установить его только из раскадровки).
Теперь вы можете легко добиться анимации с помощью CGAffineTransform
.
Я буду называть имена розеток для анимированного представления как imageViewOne
и imageViewTwo
.
В viewDidLoad()
напишите это (если изначально представления скрыты):
imageViewOne.transform = CGAffineTransform(translationX: 0.0, y: containerViewOne.bounds.height)
imageViewTwo.transform = CGAffineTransform(translationX: 0.0, y: -containerViewOne.bounds.height)
Затем показать его с анимацией:
//To build out of line
UIView.animate(withDuration: 1.0, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.5, options: .curveEaseInOut, animations: {
self.imageViewOne.transform = .identity
self.imageViewTwo.transform = .identity
}, completion: nil)
//To build into line
UIView.animate(withDuration: 1.0, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.5, options: .curveEaseInOut, animations: {
self.imageViewOne.transform = CGAffineTransform(translationX: 0.0, y: containerViewOne.bounds.height)
self.imageViewTwo.transform = CGAffineTransform(translationX: 0.0, y: -containerViewOne.bounds.height)
}, completion: nil)