[swift] Swift에서 비디오 재생 시 인터페이스 커스터마이징하기

iOS 애플리케이션을 개발하다 보면 비디오를 재생하고 사용자 경험을 향상시키기 위해 비디오 플레이어 인터페이스를 커스터마이징해야 할 때가 있습니다. Swift에서 AVFoundation 프레임워크를 사용하여 비디오를 재생하고 인터페이스를 커스터마이징하는 방법을 알아보겠습니다.

비디오 플레이어 뷰 만들기

먼저, 비디오를 재생하기 위한 플레이어 뷰를 만들어야 합니다. AVPlayerViewController 는 기본 비디오 플레이어를 제공하지만, 여기서는 인터페이스를 직접 커스터마이징하기 위해 AVPlayerLayer 를 사용할 것입니다.

import AVFoundation
import AVKit
import UIKit

class CustomVideoPlayerView: UIView {
    private var player: AVPlayer?

    func setupPlayer(with url: URL) {
        let playerItem = AVPlayerItem(url: url)
        player = AVPlayer(playerItem: playerItem)

        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.frame = bounds
        layer.addSublayer(playerLayer)

        player?.play()
    }
}

위 코드는 CustomVideoPlayerView 라는 사용자 정의 뷰를 만들고, setupPlayer 메서드를 사용하여 비디오를 재생하는 기능을 구현한 것입니다.

사용자 정의 컨트롤 추가하기

비디오 플레이어에 플레이어 컨트롤을 추가하여 사용자가 비디오를 조작할 수 있도록 만들 수 있습니다. 여기서는 재생/일시정지 버튼을 추가하는 예시를 살펴보겠습니다.

class CustomVideoPlayerView: UIView {
    // ... (이전 코드 생략)

    func addCustomControls() {
        let playButton = UIButton(type: .custom)
        playButton.setTitle("Play", for: .normal)
        playButton.addTarget(self, action: #selector(playButtonTapped), for: .touchUpInside)
        addSubview(playButton)
    }

    @objc func playButtonTapped() {
        if player?.rate == 0 {
            player?.play()
        } else {
            player?.pause()
        }
    }
}

addCustomControls 메서드를 사용하여 플레이어 뷰에 재생 버튼을 추가했습니다. 이 버튼을 누를 때마다 playButtonTapped 메서드가 호출되어 비디오의 재생/일시정지 상태를 변경합니다.

마치며

위에서는 Swift를 사용하여 비디오 플레이어 인터페이스를 커스터마이징하는 방법을 살펴보았습니다. 사용자 정의 뷰를 만들고, 컨트롤을 추가함으로써 비디오 플레이어를 완전히 커스터마이즈할 수 있습니다. 이를 통해 애플리케이션의 사용자 경험을 향상시킬 수 있습니다.

참고: Apple Developer Documentation - AVFoundation