class가 각각 해당하는 controller로 뜨는게 맞는지 확인
video Scene에 버튼 추가 후 title을 삭제하고, 사진을 추가해준다.
아래 드래그 되어있는 줄의 AVPlayer는 AVKit을 import해야만 쓸 수 있다.
import UIKit
import AVKit
class VideoViewController: UIViewController {
// 비디오 재생 버튼이 탭되었을 때 호출되는 액션 메서드
@IBAction func playVideo(_ sender: UIButton) {
// 앱 번들에서 "maru.mp4" 비디오 파일의 경로를 찾음
let videoPath: String? = Bundle.main.path(forResource: "maru", ofType: "mp4")
// 찾은 경로를 사용하여 URL 객체 생성 (강제 언래핑 사용, 주의 필요)
let videoURL = URL(filePath: videoPath!)
// 생성된 URL을 사용하여 AVPlayer 인스턴스 생성
let player = AVPlayer(url: videoURL)
// AVPlayerViewController 인스턴스 생성 (비디오 재생을 위한 표준 UI 제공)
let playerController = AVPlayerViewController()
// 생성된 플레이어 컨트롤러에 AVPlayer 인스턴스 할당
playerController.player = player
// 현재 뷰 컨트롤러 위에 플레이어 컨트롤러를 모달로 표시
present(playerController, animated: true)
// 비디오 재생 시작
player.play()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
present(playerController, animated: true) 보다 self.present(playerController, animated: true)이 더 나은 이유 :
- 코드의 가독성이 향상된다. 메서드 호출이 현재 인스턴스의 메서드임을 명확히 나타낸다.
- 지역 변수나 매개변수와의 이름 충돌을 방지할 수 있다.
- 클로저 내에서 사용할 때 강한 참조를 명시적으로 표현할 수 있다.
위의 소스에는 강제로 언래핑한 부분이 있어 예외사항이 있을 때 오류가 날 수 있기 때문에, guard let 문으로 예외사항이 있어도 실행되도록 변경한 소스
다음 이미지처럼 자동으로 코드를 생성했는데 파란색 부분이 떴을 때 엔터 키를 누르면, 중괄호가 뜬다.
VideoViewController를 다 수정한 후 실행한 결과
다음 사진에서 오류가 나는 이유는 url 값이 언래핑되어있지 않기 때문이다. (빨간 밑줄이 쳐져있는 url에 !를 붙여야 함)
기본 실행 url과 homepage 버튼 클릭 시 호출하는 url을 모두 작성한 후의 코드
실행 결과
참고자료 : 한성현 교수님 수업자료
'iOS프로그래밍 (2학년 2학기)' 카테고리의 다른 글
241205 iOS프로그래밍기초 14주차 (0) | 2024.12.05 |
---|---|
241114 iOS프로그래밍기초 11주차 (0) | 2024.11.14 |
241031 iOS프로그래밍기초 9주차 (5) | 2024.10.31 |
241017 iOS프로그래밍기초 7주차 (1) | 2024.10.17 |
241009 iOS프로그래밍기초 6주차 (1) | 2024.10.14 |