Как мне анимировать scrollview?

#ios #animation #autolayout

#iOS #Анимация #автоматическое описание

Вопрос:

Как я могу создавать такие анимации или пользовательские переходы в режиме прокрутки. Ожидаемую анимацию вы можете увидеть в GIF:https://gfycat.com/EveryBackLhasaapso

Ожидание:

При длительном нажатии на scrollview он должен расширяться, как GIF-анимация, и значок также должен увеличиваться.

Я пытался достичь этого с помощью scrollview, но анимация не соответствует ожидаемому.

 UIView.animate(withDuration: 0.2, delay: 0.2, usingSpringWithDamping: 0.5, initialSpringVelocity: 1, options: .curveEaseInOut, animations: {
            self.scrollViewHeight.constant = isExpanded == true ? ViewConstants.collectionViewHeightWithExpand : ViewConstants.collectionViewHeightWithcollapse
            self.scrollContentViewHeight.constant = isExpanded == true ? ViewConstants.collectionViewHeightWithExpand : ViewConstants.collectionViewHeightWithcollapse
            self.scrollContentView.transform = isExpanded == true ? CGAffineTransform(scaleX: 1.20, y: 1.20) : CGAffineTransform.identity
             self.view.layoutIfNeeded()
        }) { _ in}
  

Ответ №1:

Теперь запустите ваше приложение.

 self.scrollViewHeight.constant = isExpanded == true ? ViewConstants.collectionViewHeightWithExpand : ViewConstants.collectionViewHeightWithcollapse
self.scrollContentViewHeight.constant = isExpanded == true ? ViewConstants.collectionViewHeightWithExpand : ViewConstants.collectionViewHeightWithcollapse

UIView.animate(withDuration: 0.2, delay: 0.2, usingSpringWithDamping: 0.5, initialSpringVelocity: 1, options: .curveEaseInOut, animations: {
             self.scrollContentView.transform = isExpanded == true ? CGAffineTransform(scaleX: 1.20, y: 1.20) : CGAffineTransform.identity
             self.view.layoutIfNeeded()
        }) { _ in}