241121 iOS프로그래밍기초 12주차

2024. 11. 21. 16:50·iOS프로그래밍 (2학년 2학기)

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)이 더 나은 이유 :

  1. 코드의 가독성이 향상된다. 메서드 호출이 현재 인스턴스의 메서드임을 명확히 나타낸다.
  2. 지역 변수나 매개변수와의 이름 충돌을 방지할 수 있다.
  3. 클로저 내에서 사용할 때 강한 참조를 명시적으로 표현할 수 있다.

위의 소스에는 강제로 언래핑한 부분이 있어 예외사항이 있을 때 오류가 날 수 있기 때문에, guard let 문으로 예외사항이 있어도 실행되도록 변경한 소스

다음 이미지처럼 자동으로 코드를 생성했는데 파란색 부분이 떴을 때 엔터 키를 누르면, 중괄호가 뜬다.

VideoViewController를 다 수정한 후 실행한 결과

 

다음 사진에서 오류가 나는 이유는 url 값이 언래핑되어있지 않기 때문이다. (빨간 밑줄이 쳐져있는 url에 !를 붙여야 함)

기본 실행 url과 homepage 버튼 클릭 시 호출하는 url을 모두 작성한 후의 코드

실행 결과

BMI_LSY.zip
4.02MB

 

참고자료 : 한성현 교수님 수업자료

저작자표시 (새창열림)

'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
'iOS프로그래밍 (2학년 2학기)' 카테고리의 다른 글
  • 241205 iOS프로그래밍기초 14주차
  • 241114 iOS프로그래밍기초 11주차
  • 241031 iOS프로그래밍기초 9주차
  • 241017 iOS프로그래밍기초 7주차
Z2AE
Z2AE
  • Z2AE
    딩코.log
    Z2AE
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • C++ 프로그래밍 (1학년 2학기) (12)
      • 서버프로그래밍 (1학년 2학기) (0)
      • C# 프로그래밍 (1학년 2학기) (2)
      • 프론트엔드 웹개발 (1학년 2학기) (2)
      • 데이터베이스 (2학년 1학기) (8)
      • 자료구조 (2학년 1학기) (2)
      • JAVA프로그래밍 (2학년 1학기) (7)
      • PHP쇼핑몰실무 (2학년 1학기) (2)
      • 운영체제 (2학년 1학기) (3)
      • 모바일게임개발 (2학년 1학기) (1)
      • iOS프로그래밍 (2학년 2학기) (11)
      • 네트워크보안 (2학년 2학기) (1)
      • iOS프로그래밍실무 (3학년 1학기) (11)
      • 소프트웨어설계 (3학년 1학기) (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Z2AE
241121 iOS프로그래밍기초 12주차
상단으로

티스토리툴바