Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- swift sms
- 스위프트 테이블 뷰 셀
- 스위프트 카메라
- swift 문자
- 노티피케이션 익스텐션
- 스위프트 푸시
- 안드로이드 앨범
- silent push
- 안드로이드 바로가기
- 푸시 데이터 저장
- flutter rotate
- Flutter UIKitView MethodChannel
- 플러터 뷰 컨트롤러
- 앱 백그라운드 푸시 데이터 저장
- 스위프트 웹뷰
- 스위프트 앨범
- 안드로이드 FCM
- 안드로이드 에러
- FlutterView MethodChannel
- Flutter NativeView
- native flutter view
- NotificationService Extension
- 스위프트 UserDefaults
- 앱 꺼졌을 때 푸시 데이터 저장
- swift autolayout
- 스위프트
- flutter 회전
- 안드로이드 숏컷
- Swift flutterview
- Swift flutterviewcontroller
Archives
- Today
- Total
Things take time
[SWIFT] 카메라 사진 찍기, 앨범에서 사진 가져오기 본문
카메라로 사진을 찍고, 앨범을 호출해서 해당 이미지를 불러와 이미지 뷰에 뿌리는 작업이다.
간단한 예제라서 설명은 길게 할 필요는 없고, Http 통신 공부 후에 업로드하는 포스팅을 작성할 것이다.
[사전 작업]
iOS도 안드로이드와 마찬가지로 권한을 요청해야하는데, 다만 코드로 직접 퍼미션을 관리하는 안드로이드와 달리 설정내용을 저장하는 plist가 있어 간편하게 사용할 수 있다.
카메라와 앨범을 사용하겠다는 권한을 추가한다.
import UIKit import MobileCoreServices // swift 모든 데이터타입(미디어 등)이 정의되어 있는 헤더 class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { @IBOutlet weak var imageView: UIImageView! let imagePicker: UIImagePickerController! = UIImagePickerController() var captureImage: UIImage! var flagImageSave = false override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func cameraClicked(_ sender: UIButton) { if(UIImagePickerController.isSourceTypeAvailable(.camera)){ flagImageSave = true imagePicker.delegate = self imagePicker.sourceType = .camera imagePicker.mediaTypes = [kUTTypeImage as String] imagePicker.allowsEditing = false present(imagePicker, animated: true, completion: nil) } } @IBAction func albumClicked(_ sender: UIButton) { if (UIImagePickerController.isSourceTypeAvailable(.photoLibrary)) { flagImageSave = false imagePicker.delegate = self imagePicker.sourceType = .photoLibrary imagePicker.mediaTypes = [kUTTypeImage as String] imagePicker.allowsEditing = true present(imagePicker, animated: true, completion: nil) } } // 사진 찍은 후, 앨범에서 사진을 가져온 후 실행되는 함수 @available(iOS 2.0, *) public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]){ let mediaType = info[UIImagePickerControllerMediaType] as! NSString print(mediaType) if mediaType.isEqual(to: kUTTypeImage as NSString as String) { captureImage = info[UIImagePickerControllerOriginalImage] as! UIImage if flagImageSave { UIImageWriteToSavedPhotosAlbum(captureImage, self, nil, nil) } imageView.image = captureImage } self.dismiss(animated: true, completion: nil) } @available(iOS 2.0, *) public func imagePickerControllerDidCancel(_ picker: UIImagePickerController){ self.dismiss(animated: true, completion: nil) } }
1. MobileCoreServices라는 스위프트에서 사용하는 모든 데이터타입이 정의된 헤더파일을 import, 이 안에 미디어 타입 등이 정의되어있다.
2. 카메라나 앨범을 사용하려면 UIImagePickerController를 사용해야하는데 그 딜리게이트는 UINavigationController도 같이 포함되어 있다(커맨드로 들어가서 delegate검색하면 나옴) 그러므로 두 개의 프로토콜을 상속받는다.
3. 나머지는 문법, 정해진 방법이므로 이 방법대로 사용한다.
'iOS (기능)' 카테고리의 다른 글
[SWIFT] 웹뷰와 자바스크립트 연동 (Native <-> JavaScript 통신 방법) (18) | 2017.05.17 |
---|---|
[SWIFT] 이미지 파일 서버(php) 업로드 하기 (5) | 2017.05.17 |
[SWIFT] 기본적인 데이터 통신(HTTP : URLSession.shared.dataTask) (1) | 2017.04.26 |
[SWIFT] WKWEBVIEW를 이용한 하이브리드 앱 : 웹 뷰 세팅 (0) | 2017.04.18 |
[SWIFT] Googles Map API를 이용하여 구글맵 기능 사용하기 (2) | 2017.04.13 |