오늘은 플레이어뷰의 가로모드를 구현해보겠습니다.
위 코드처럼 ViewController에 playerView와 UIView, UIButton을 각각 연결 시켜 주시고
AVPlayer을 player로 가져옵니다.
가로 모드 변환 코드는
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .landscapeRight
}
플레이어가 진행중인지 아닌지 확인하는 메서드는
extension AVPlayer {
var isPlaying: Bool {
guard self.currentItem != nil else { return false }
return self.rate != 0
}
이후
ViewController를 눌렀을 때 실행해야할 코드들을 만들어보겠습니다.
할 일
1. movie를 가져옵니다.
2. player vc를 띄워서 전달
3. plyaer vc + moive전달
4. presenting player vc
클릭했을 때 반응을 해야하는 것은
UICollectionViewDelegate에 작성해줍니다.
extension SearchViewController: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
1. movie를 가진다. (url를 가져와서 avplayeritem을 item에 할당)
let movie = movies[indexPath.item]
let url = URL(string: movie.previewURL)!
let item = AVPlayerItem(url: url)
2. player vc를 띄워서 전달한다.
"Player" 스토리보드에서 뷰컨트롤 가져오게 합니다. (+모달로 풀스크린으로 띄우게 합니다)
let sb = UIStoryboard(name: "Player", bundle: nil)
let vc = sb.instantiateViewController(identifier: "PlayerViewController") as! PlayerViewController
vc.modalPresentationStyle = .fullScreen
// 모달로 풀스크린으로 띄우게 합니다
3. player vc + movie 전달
vc.player.replaceCurrentItem(with: item)
4. presenting player vc
present(vc, animated: false, completion: nil)
선택하면 preview바로 시작
override func viewDidLoad() {
super.viewDidLoad()
//뷰컨트롤러의 메모리가 올라옴
playerView.player = player
//뷰의 플레이어가 누구냐? 아웃풋을 내주는 애가 누구냐? 뷰컨의 player다.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
play()
//보여지기 직전에 플레이 시킴(누르면 바로 시작)
재생과 일시정지 버튼 누르면 동작
if player.isPlaying {
pause()
} else {
play()
}
func play() {
player.play()
playButton.isSelected = true
}
func pause() {
player.pause()
playButton.isSelected = false
}
func reset() {
pause()
player.replaceCurrentItem(with: nil)
} //&나가면서 리셋시켜주고 나가, 플레이어 아이템을 제거한다 = 플레이어를 비운다.
'iOS > Swift 어플 따라하기' 카테고리의 다른 글
[Swift] Firebase Realtime Database에서 Read Data (0) | 2022.04.02 |
---|---|
[swift] SDK? / cocoapods 설치 (0) | 2022.03.31 |
[Swift] Search 결과 UICollectionView로 표현(서드파티 라이브러리 사용) (0) | 2022.03.28 |
[Swift] SearchAPI를 구현해 보자. (2) | 2022.03.28 |
[Swift]SearchBar 키보드 내려주기, ViewController와 해야 할 일 (2) | 2022.03.24 |