iOSアプリ5の作成🐥


アルバム
編み主板

アプリケーションのカメラ権限の設定
直接infoで権限を設定する


上記のコードではなくUIシステムで設定することもできますが、以下のコードで設定することもできます.
コードによる権限の設定

上記のようにinfoのsource codeに入ります.

このようなコードを追加することができます.
ViewControlコードの作成
コードによるviewDidLoad()/button clickアクションの作成
//
//  ViewController.swift
//  crack_app_5
//
//  Created by 김용재 on 2022/02/16.
//

import UIKit
import YPImagePicker

class ViewController: UIViewController {

    @IBOutlet weak var profileImage: UIImageView!
    
    @IBOutlet weak var profileChangeBtn: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        // 동그랗게 만들기!
        
        profileImage.layer.cornerRadius = profileImage.frame.height / 2
        profileChangeBtn.layer.cornerRadius = 10
        
        
        // 원래 우리가 하던 방식대로 프사 바꾸기 버튼을 끌고와서 action을 만들 수 있지만, 직접 이렇게 코드를 통해서 만들수도 있다!
        self.profileChangeBtn.addTarget(self, action: #selector(onProfileChangeBtnClicked), for: .touchUpInside)
        
        
    }
    
    // 프사 변경 버튼이 클릭되었을 경우 imagePicker를 띄우게 한다.
    @objc fileprivate func onProfileChangeBtnClicked(){
        print("ViewController - onProfileChangeBtnClicked() called")
        
        // 카메라 라이브러리 세팅 (구성을 내가 선택할 수 있다.)
        var config = YPImagePickerConfiguration()
        config.screens = [.library]
        
        let picker = YPImagePicker(configuration:  config)
        picker.didFinishPicking { [unowned picker] items, _ in
            if let photo = items.singlePhoto {
                print(photo.fromCamera) // Image source (camera or library)
                print(photo.image) // Final image selected by the user
                print(photo.originalImage) // original image selected by the user, unfiltered
                print(photo.modifiedImage) // Transformed image, can be nil
                print(photo.exifMeta) // Print exif meta data of original image.
                
                // 프사이미지를 변경한다.
                self.profileImage.image = photo.image
            }
            // 사진 선택창 닫기
            picker.dismiss(animated: true, completion: nil)
        }
        // 사진 선택창 보여주기
        present(picker, animated: true, completion: nil)
    }

}