[swift] Swift에서 비디오 재생 시 터치 제스처 추가하기

Swift를 사용하여 iOS 애플리케이션을 개발하는 경우, 비디오 재생 화면에 사용자 인터랙션을 추가하고 싶을 수 있습니다. 이를 위해 터치 이벤트를 감지하여 특정 기능을 수행하는 기능을 구현할 수 있습니다.

비디오 플레이어 생성과 제스처 추가

먼저, AVKit 프레임워크를 가져와 비디오 플레이어를 생성합니다.

import AVKit
import AVFoundation
import UIKit

class VideoPlayerViewController: UIViewController {
    
    var player = AVPlayer()
    var playerViewController = AVPlayerViewController()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        guard let videoURL = Bundle.main.url(forResource: "sample", withExtension: "mp4") else {
            return
        }
        
        player = AVPlayer(url: videoURL)
        playerViewController.player = player
        addChild(playerViewController)
        view.addSubview(playerViewController.view)
        playerViewController.view.frame = view.frame
        
        playerViewController.showsPlaybackControls = false  // 비디오 컨트롤러 숨기기
        player.play()
    }
}

위 코드는 AVKit 및 AVFoundation 프레임워크를 사용하여 VideoPlayerViewController를 만들고, 비디오를 재생합니다.

터치 제스처 추가

이제, 비디오 플레이어 화면에 터치 제스처를 추가하여 플레이어 컨트롤을 제어하는 동작을 구현할 수 있습니다.

override func viewDidLoad() {
    super.viewDidLoad()
    
    // ... (이전의 코드는 동일)

    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTapGesture))
    playerViewController.view.addGestureRecognizer(tapGesture)
}

@objc func handleTapGesture() {
    if player.timeControlStatus == .playing {
        player.pause()
    } else {
        player.play()
    }
}

위의 코드에서 handleTapGesture 메서드는 사용자의 탭 제스처를 감지하고, 비디오가 재생 중이면 일시 정지하고, 일시 정지 중이면 재생하는 기능을 구현합니다.

이제, Swift를 사용하여 비디오 플레이어에 터치 제스처를 추가하는 방법을 알아보았습니다.

참고 자료