मुझे लोटी एनिमेशन में समस्या है, मेरे ऐप पर किसी प्रकार की ऑनबोर्डिंग है और मैं जो हासिल करना चाहता हूं वह यह है कि संग्रह दृश्य में हर बार दृश्य बदल जाता है, मेरी एनीमेशन शुरू करने के लिए, मेरे पास 4 पृष्ठ और 4 अलग-अलग लॉटरी एनिमेशन हैं। वर्तमान में अगर मैं एनीमेशन.प्ले() फ़ंक्शन को कॉल करता हूं, एक बार ऐप शुरू होने के बाद, मेरे सभी एनिमेशन एक ही समय में चलाए जाते हैं, इसलिए एक बार जब मैं अपने अंतिम पृष्ठ पर पहुंच जाता हूं, तो एनीमेशन खत्म हो जाता है। और मैं चाहता हूं कि मेरी लॉटरी केवल एक बार खेली जाए, जब दृश्य दिखाया जाए।

यह मेरा सेल है

class IntroductionCollectionViewCell: UICollectionViewCell {

@IBOutlet var title: UILabel!
@IBOutlet var subtitleDescription: UILabel!
@IBOutlet var animationView: AnimationView!

override func awakeFromNib() {
    super.awakeFromNib()
}
    
public func configure(with data: IntroInformations) {
    let animation = Animation.named(data.animationName)
    
    title.text = data.title
    subtitleDescription.text = data.description
    animationView.animation = animation
}

static func nib() -> UINib {
    return UINib(nibName: "IntroductionCollectionViewCell", bundle: nil)
  }
}

मेरा संग्रह दृश्य इस प्रकार सेट किया गया है

extension IntroductionViewController {

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 0
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    pages.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "IntroductionCollectionViewCell", for: indexPath) as! IntroductionCollectionViewCell
    
    cell.configure(with: pages[indexPath.row])
    cell.animationView.loopMode = .loop
    cell.animationView.play()
    
    return cell
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: view.frame.width, height: view.frame.height)
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let scrollPos = scrollView.contentOffset.x / view.frame.width
    self.pageControl.currentPage = Int(floorf(Float(scrollPos)))
    
    let n = pageControl.numberOfPages
    
    if self.pageControl.currentPage == n - 1 {
        continueButton.isHidden = false
    } else {
        continueButton.isHidden = true
    }
}
}

अग्रिम में धन्यवाद!!

1
miki 21 जुलाई 2021, 09:58

2 जवाब

सबसे बढ़िया उत्तर
  if let cell = cell as? IntroductionCollectionViewCell {
     cell.animationView.loopMode = .playOnce
     cell.animationView.play()
  }

यह उत्तर है, मुझे जांच करने की आवश्यकता है कि क्या सेल एक बार लोड हो गया है मेरा सेल जहां लोटी एनीमेशन है

0
miki 31 अगस्त 2021, 06:38

आप ऐनिमेशन को प्रारंभ/बंद करने के लिए संग्रह व्यूडिलेगेट विलडिस्प्ले और didEndDisplaying विधियों का उपयोग कर सकते हैं। और सेल को कॉन्फ़िगर करते समय नहीं। - https://developer.apple.com/documentation/uikit/uicollectionviewdelegate यदि आप चाहते हैं कि एनीमेशन केवल एक बार चले तो लूप विकल्प का उपयोग न करें।

0
CloudBalancing 21 जुलाई 2021, 13:04