collectionview
은 전체 화면이 cells
이고, 하나씩 자동 스크롤됩니다. 내 셀 안의 imageView
에 애니메이션을 추가하고 싶습니다. 하지만 자동 스크롤이 끝난 후에 애니메이션을 시작하고 싶습니다. 아래 코드를 시도했지만 첫 번째 셀에서만 작동합니다.콜렉션 뷰 셀이 보이기 시작한 후에 이미지보기 애니메이션하기
이 줄의 애니메이션 기능을 호출합니다. cell.alpImage.getBiggerAnim()
. 하지만 전에 말했듯이, 그것은 첫 번째 셀에서만 작동합니다. 이건 내 애니메이션 확장
func scrollToNextCell(){
let cellSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
let contentOffset = myCollectionView.contentOffset
width: cellSize.width, height: cellSize.height), animated: true)
alphabetSoundPlay()
}
var myTimer: Timer?
func startTimer() {
myTimer = Timer.scheduledTimer(timeInterval: 3.0,
target: self,
selector: #selector(scrollToNextCell),
userInfo: nil,
repeats: true)
}
입니다 :
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = myCollectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! AlphabetCollectionViewCell
if (indexPath.item >= alpImageArray.count - 1) {
cell.alpImage.isHidden = true
cell.startAgain.isHidden = false
cell.readyLabel.isHidden = true
cell.startAgain.addTarget(self, action: #selector(startAgainPressed), for: .touchUpInside)
} else if (indexPath.item == 0) {
cell.readyLabel.isHidden = false
cell.alpImage.isHidden = true
} else {
cell.startAgain.isHidden = true
cell.readyLabel.isHidden = true
cell.alpImage.isHidden = false
cell.alpImage.image = UIImage(named: alpImageArray[indexPath.row] + ".png")
}
cell.alpImage.getBiggerAnim()
return cell
}
이
자동 스크롤 관리하는 기능입니다extension UIView {
func getBiggerAnim() {
UIView.animate(withDuration: 0.6 , animations: {
self.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
},completion: { finish in
UIView.animate(withDuration: 0.6){
self.transform = CGAffineTransform.identity
}
})
}
}
'cel에서 애니메이션 메소드를 호출하면 안됩니다. lForItem'을 호출하면 스크롤이 끝나기 전에 호출됩니다. UIScrollViewDelegate의'scrollViewDidEndDecelerating' 콜백에서 호출 할 수 있습니다. 어떤 셀을 볼 수 있는지 알아야합니다. – ovejka
메인 스레드에서'getBiggerAnim' 호출을 시도 했습니까? –