iOS-Children-Study / Growth-Study

성장로드맵 체크포인트 기반 스터디 레포입니다.
1 stars 0 forks source link

김주영_0809 #13

Open JooYoung1121 opened 1 year ago

JooYoung1121 commented 1 year ago

swift

* 함수, 반복문, 조건문 등의 기본 문법을 숙지했다.

    let filterTitle: String? = {
            switch filterType {
            case .createType:
                return viewModel.createdType?.description
            case .statusType:
                return viewModel.statusType?.description
            case .exposeType:
                return viewModel.exposeTypes?.description
            }
        }()

* 구조체와 클래스의 차이를 인지하고 있다.

* 예) value type, reference type
* 예) shallow copy, deep copy

* inheritance와 extension 등 기능을 확장하는 방법의 용도와 차이를 숙지하고 있다.

* designate initializer와 convenience initializer의 차이를 안다.

* protocol과 generic 등을 이용한 기능 확장과 코드 재사용의 개념을 이해하고 있다.

구현공유

1. 실시간 카메라 화면 받아오기

// AVCaptureSession 설정
            guard let captureDevice = AVCaptureDevice.default(for: .video),
                  let input = try? AVCaptureDeviceInput(device: captureDevice) else {
                return
            }

            captureSession.addInput(input)
            DispatchQueue.global().async {
                self.captureSession.startRunning()

                DispatchQueue.main.async { [weak self] in
                    guard let self else { return }
                    previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
                    previewLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill
                }
            }

2. url로 추출된 영상 추출 및 저장

func convertURLtoPHAsset(videoURL: URL, completion: @escaping (() -> Void)) {
        PHPhotoLibrary.shared().performChanges({
            let request = PHAssetCreationRequest.forAsset()
            request.addResource(with: .video, fileURL: videoURL, options: nil)
        }) { (success, error) in
            if success {
                completion()
            } else {
                errorLog("영상 추출에 실패했습니다. URL : \(videoURL), error: \(error?.localizedDescription ?? "")")
            }
        }
    }