DMSwipeCards icon indicating copy to clipboard operation
DMSwipeCards copied to clipboard

Event when a card is displayed

Open Isuru-Nanayakkara opened this issue 7 years ago • 2 comments

Hi,

I have to play a bunch of videos retrieved from the internet on cards. This is my view generator.

let viewGenerator: (Video, CGRect) -> (UIView) = { (video: Video, frame: CGRect) -> (UIView) in
      let containerView = UIView(frame: self.view.bounds)
      
      let asset = AVURLAsset(url: URL(string: video.url)!)
      asset.resourceLoader.setDelegate(self, queue: DispatchQueue.main)
      
      let player = AVPlayer(playerItem: AVPlayerItem(asset: asset))
      player.actionAtItemEnd = .none
      
      let playerLayer = AVPlayerLayer(player: player)
      playerLayer.frame = self.view.bounds
      playerLayer.backgroundColor = UIColor.clear.cgColor
      
      containerView.layer.addSublayer(playerLayer)
      
      player.play()
      return containerView
  }

Is there a way to get notified when each card is shown in the screen? A delegate method perhaps.

The reason is, it's a little different than displaying static views or images. Because view/image cards are sort of "preloaded", right? When I add video player cards in the view generator, I have to set it to play player.play() right within the generator. The problem is then all the preloaded videos also get played simultaneously.

If there's a way to get notified when each card is displayed, maybe I could make it play when that happens.

Isuru-Nanayakkara avatar Nov 19 '17 12:11 Isuru-Nanayakkara

Inside DMSwipeCardsView.swift locate the two methods cardSwipedLeft & cardSwipedRight. In both methods, before calling loadNextCard, you should have the card that now has become on top somewhere in the self.loadedCards array. Probably it's the last element. You could then force cast it to your own class & call your play method.

D-32 avatar Nov 19 '17 23:11 D-32

maybe we can improve on this, by making a delegate function as currentCard id / value, etc.?

i-am-chris avatar Mar 21 '18 12:03 i-am-chris