Computer Science
탄탄한 기반 실력을 위한
전공과 이론 지식 모음
Today I Learned!
배웠으면 기록을 해야지
TIL 사진
Flutter 사진
Flutter로 모바일까지
거꾸로캠퍼스 코딩랩 Flutter 앱개발 강사
스파르타코딩클럽 즉문즉답 튜터
카카오테크캠퍼스 3기 학습코치
프로필 사진
박성민
임베디드 세계에
발을 들인 박치기 공룡
임베디드 사진
EMBEDDED SYSTEM
임베디드 SW와 HW, 이론부터 실전까지
ALGORITHM
알고리즘 해결 전략 기록
🎓
중앙대학교 소프트웨어학부
텔레칩스 차량용 임베디드 스쿨 3기
애플 개발자 아카데미 1기
깃허브 사진
GitHub
프로젝트 모아보기
Instagram
인스타그램 사진

Develop/iOS 개발

[iOS 앱 개발 - Swift] 코코아팟으로 이미지편집기 사용하기

sm_amoled 2019. 8. 14. 14:17

[iOS 앱 개발 - Swift] 코코아팟으로 이미지편집기 사용하기

부스트코스에서 프로젝트를 하면서 외부기능을 가져올 일이 있었습니다. 바로 요것!

사진을 imagePicker에서 골라준 다음에, 사이즈를 조정하거나 기울기, 크롭 등의 작업을 해주기 위해 어떤 방법을 써야하나 고민을 했는데, 친구한테 물어보니 외부에 라이브러리가 많으니 참고해보라고 해서 여기저기 찾아봤어요. 그렇게 찾은게 바로 요 Mantis라는 것입니다.

https://github.com/guoyingtao/Mantis

 

guoyingtao/Mantis

A photo cropping tool which mimics Photo.app. Contribute to guoyingtao/Mantis development by creating an account on GitHub.

github.com

 

그런데, 적용방법이 CocoaPods을 이용한다고 하더라구요. 예전에 코코아팟에 대한 글을 작성한 적이 있었는데, 이걸 실제로 사용해보는 것은 처음이였어요. ㅋㅋㅋ

https://zeddios.tistory.com/25

 

왕 초보를 위한 CocoaPods(코코아팟) 사용법 (Xcode와 연동)

안녕하세요! 오늘은 CocoaPod사용법에 대해 알려드릴려고해요 :) 저는 CocoaPod 처음에 시작할 때 뭐가 뭔지 몰라서 정말 하나도 몰라서 진짜 어려운거구나...라고 생각했었어요. 하지만 한번 배워 놓으면 정말 쉽..

zeddios.tistory.com

 

위 블로그에 코코아팟을 사용하는 방법이 아주 자세하게 설명이 되어있어요. 물론 저분이 작성하신 포스팅의 내용을 발췌해올 수도 있겠지만, 

양심상 ㅋㅋㅋ

 링크를 달아두도록 할게요!

해당 코코아팟의 설치할 때의 pod 'Mantis', '~> 0.28' 입니다.


위 블로그에서 나오는 방법을 따라서 터미널을 이용해 Mantis를 설치를 해주면 프로젝트 폴더에 Pods 파일이 알아서 생성이 됩니다. 우리가 해줄 일은 UIKit 라이브러리를 가져오듯이 import Mantis 로 설치해준 파일을 Swift 파일에 불러오는 것이죠. Mantis 라이브러리의 사용방법은 위의 Mantis Github에 잘 설명이 되어있습니다. 그저 그걸 따라가면 되는거죠!

위 이미지에서 cropViewController를 어떻게 init 하는지, 호출자는 어떤 조건을 따라야 하는지를 설명하고 있습니다. 그리고 Demo Code에서는 실제로 사용방법에 대해 알려주고 있구요. 저도 이를 따라서 코드를 작성해봤습니다.

 

Mantis를 import 해주고, CropViewControllerProtocol을 채택해주었습니다. ( 사실 여기서 Protocol이 Swift에서 문법적으로 의미하는 바는 잘 모르겠지만, Delegate와 거의 유사한 방식으로 작동하는 거라고 생각이 되네요 )

 

그다음 CropViewController를 생성하면서 imagePicker에서 골라준 이미지를 인자로 전달하고, delegate로 self를 지정한 뒤 present 해줬습니다. crop 프로토콜에 대한 함수를 지정해야 한다고 Usage에 나와있었으니, 이를 그대로 따라 작성해주었습니다. 얻은 이미지를 어떻게 처리할 건지에 대해func didGetCroppedImage 를 작성해주면 됩니다!

 


이렇게만 해주면 다음처럼 근사한 Crop Controller를 만들 수 있습니다.

320x100