-
[12주차] BMIiOS프로그래밍기초 2024. 11. 21. 14:01
1. video컨트롤러 지우고 깔끔하게 다시 시작

1번은 쓰레기통으로 버리기, 활성화된 2번은 파일은 남아있지만 보이지만 않게 하기 2. identity inspector
아이덴티티 인스팩터를 보자

bmi에는 뷰 컨트롤러가 연결되있다. 
새로만든 video 뷰에도, VideoController를 연결해야한다. identity inspector : 뷰와 클래스를 연결하는 인스팩터다
Video Scene 스토리보드와 VideoViewController클래스 연결
3.
Bundle.main.path(forResource: "bmi", ofType: "mp4")

옵셔널 스트링 타입이라는게 중요
4.

let을 사용해서 이뮤터블 벨류가 뜨고
이 경고는 videoPath를 사용하지 않고 있어서 뜨는 경고다.
5. 비디오 재생 함수
@IBAction func playVideo(_ sender: UIButton) { // 앱 번들에서 "bmi.mp4"라는 이름의 동영상 파일 경로를 가져옴 let videoPath: String? = Bundle.main.path(forResource: "bmi", ofType: "mp4") // 옵셔널 강제 해제를 통해 동영상 파일의 URL 객체를 생성 let videoURL = URL(filePath: videoPath!) // AVPlayer를 생성하고 동영상 URL로 초기화 let player = AVPlayer(url: videoURL) // 동영상 재생을 위한 컨트롤러(AVPlayerViewController)를 생성 let playerController = AVPlayerViewController() // AVPlayerViewController에 생성한 AVPlayer를 연결 playerController.player = player // 동영상 재생 컨트롤러를 현재 화면에 표시 present(playerController, animated: true) // AVPlayer를 통해 동영상 재생 시작 player.play() }이 소스에서 시험나옴
아쉬운점을 수정된 코드
@IBAction func playVideo(_ sender: UIButton) { // 앱 번들에서 동영상 파일 경로를 안전하게 가져옴 guard let videoPath = Bundle.main.path(forResource: "bmi", ofType: "mp4") else { print("비디오 파일을 찾을 수 없습니다.") return } // 동영상 파일 URL 생성 let videoURL = URL(fileURLWithPath: videoPath) // AVPlayer와 AVPlayerViewController 생성 let player = AVPlayer(url: videoURL) let playerController = AVPlayerViewController() playerController.player = player // 동영상 재생이 끝난 후 작업을 처리하기 위한 옵저버 등록 NotificationCenter.default.addObserver(self, selector: #selector(videoDidFinish(_:)), name: .AVPlayerItemDidPlayToEndTime, object: player.currentItem) // AVPlayerViewController를 현재 화면에 표시 및 동영상 재생 present(playerController, animated: true) { player.play() } } // 동영상이 끝난 후 호출되는 메소드 @objc func videoDidFinish(_ notification: Notification) { print("동영상 재생이 완료되었습니다.") // 추가 작업 수행 가능 (예: 다음 화면으로 이동) }6. present 함수

modal , 뭔가 끄기등을 안하면 진행이 안되는 친구들

두번쨰 인자를 안줬지만, 디폴트로 nil이 들어가게 되어있다. 
파란 부분에서 엔터키를 치면 블럭이 생긴다. 
첫번째 꺼는 이제 쓰지 말기를 권하는 옛날꺼 7. fix가 가드 렛으로 고쳐주는거

8. chatGtp 가 주석과 문서화 해주기
// // WebViewController.swift // BMI_hsh // // Created by Induk CS on 2024/11/21. // import UIKit import WebKit /// WebViewController는 WKWebView를 사용하여 웹 페이지를 로드하고 표시하는 역할을 담당합니다. class WebViewController: UIViewController { // MARK: - Outlets /// 스토리보드에서 연결된 WKWebView 객체 @IBOutlet weak var webView: WKWebView! // MARK: - Lifecycle /// 뷰가 메모리에 로드된 직후 호출됩니다. /// 초기화 작업을 수행하고, 기본 웹 페이지를 로드합니다. override func viewDidLoad() { super.viewDidLoad() // 초기 웹 페이지 로드: 클래스에 연결된 블로그 페이지 loadWebPage(urlString: "https://classbasicpro.tistory.com/") } // MARK: - Actions /// 네이버 모바일 페이지로 이동하는 버튼 액션 /// /// - Parameter sender: 버튼을 클릭한 객체 @IBAction func goNaver(_ sender: UIButton) { loadWebPage(urlString: "https://m.naver.com") } // MARK: - Helper Methods /// 지정된 URL 문자열을 WKWebView에 로드합니다. /// /// URL이 유효하지 않은 경우, 오류 메시지를 출력하고 로드를 중단합니다. /// /// - Parameter urlString: 로드할 웹 페이지의 URL 문자열 private func loadWebPage(urlString: String) { // URL 문자열을 URL 객체로 변환 guard let url = URL(string: urlString) else { print("유효하지 않은 URL입니다: \(urlString)") return } // URLRequest 생성 및 웹 페이지 로드 let request = URLRequest(url: url) webView.load(request) } }
url도 구조체다. 'iOS프로그래밍기초' 카테고리의 다른 글
[14주차] 복습 + 클로저 closure (1) 2024.12.05 [13주차] BMI (1) 2024.11.28 [11주차] BMI 계산 앱 만들기 (0) 2024.11.14 [10주차]Ios 예제 살펴보기2 + bmi 판정 프로그램 제작 (1) 2024.11.07 [9주차] xcode, 시뮬레이터 예제들 (6) 2024.10.31