[ios] 미디어 파일의 재생 중 슬라이더 및 타임라인 표시
iOS 앱에서 미디어 파일을 재생하는 중에 사용자에게 시간을 표시하고 재생 위치를 조절할 수 있는 슬라이더와 타임라인이 표시되면 사용자 경험이 향상됩니다. 이를 위해 AVFoundation 및 UIKit 프레임워크를 사용하여 타임라인을 구현할 수 있습니다.
AVPlayer와 Slider
AVPlayer를 사용하여 미디어 파일을 재생하고, UISlider를 사용하여 타임라인을 표시할 수 있습니다.
import UIKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet weak var playerView: UIView!
@IBOutlet weak var slider: UISlider!
var player: AVPlayer!
var playerLayer: AVPlayerLayer!
override func viewDidLoad() {
super.viewDidLoad()
guard let url = URL(string: "your_media_file_url_here") else { return }
player = AVPlayer(url: url)
playerLayer = AVPlayerLayer(player: player)
playerView.layer.addSublayer(playerLayer)
player.addPeriodicTimeObserver(forInterval: CMTimeMake(value: 1, timescale: 1), queue: DispatchQueue.main) { [weak self] time in
let currentTime = CMTimeGetSeconds(time)
let duration = CMTimeGetSeconds(self?.player.currentItem?.duration ?? CMTime())
self?.updateSlider(currentTime: currentTime, duration: duration)
}
}
func updateSlider(currentTime: Float64, duration: Float64) {
slider.value = Float(currentTime / duration)
}
@IBAction func sliderValueChanged(_ sender: UISlider) {
if let duration = player.currentItem?.duration {
let currentTime = Float64(slider.value) * CMTimeGetSeconds(duration)
let time = CMTime(seconds: currentTime, preferredTimescale: 1)
player.seek(to: time)
}
}
}
위 코드에서 sliderValueChanged
메서드는 슬라이더 값이 변경될 때 호출되며, 이를 통해 플레이어의 현재 위치를 조정합니다.
타임라인 그리기
타임라인을 시각적으로 표시하려면 AVPlayer의 현재 시간을 사용하여 사용자 정의 뷰나 프로그레스 바에 렌더링할 수 있습니다.
class TimelineView: UIView {
var progress: Float = 0 {
didSet {
setNeedsDisplay()
}
}
override func draw(_ rect: CGRect) {
super.draw(rect)
// Draw timeline using the progress value
}
}
TimelineView
클래스는 타임라인을 표시하기 위한 사용자 정의 뷰이며, progress
속성의 값에 따라 타임라인을 그리고 다시 그립니다.
위의 예제를 참고하여 AVFoundation 및 UIKit을 사용하여 iOS 앱에서 미디어 파일의 재생 중 슬라이더와 타임라인을 표시할 수 있습니다. 사용자가 미디어 파일을 효과적으로 탐색할 수 있도록 시간을 시각적으로 표현함으로써 앱의 사용성을 향상시킬 수 있습니다.
참고 자료
- AVFoundation Programming Guide
- UISlider - Apple Developer Documentation
- Custom Drawing - Apple Developer Documentation