콘텐츠로 건너뛰기
Home » Development » iOS - Cocoa Touch

iOS – Cocoa Touch

코어이미지를 사용한 QRCode 생성기

지난 시간에 코어 이미지를 사용해서 QRCode 인식기를 만드는 법에 대해서 간략히 설명하였는데, 그렇다면 반대로 문자열을 인코딩하여 QR코드를 만드는 것은 어떻게 할 수 있을까? QR코드 생성은 코어 이미지를 통해서 할 수 있다. 코어이미지는 이미지 내의 바코드와 QR코드 탐지 API를 제공하는데, 반대로 해당 코드를 이미지로 생성하는 기능도 제공한다. QRCode 생성은 CIQRCodeGenerator 라는 이름의 CIFilter를 통해서 수행할 수 있다. 해당 필터의 파라미터는 다음과 같다. inputMessage : QR코드에 인코딩될 문자열 데이터이다. 해당 문자열은 UTF8로 인코딩된 바이트스트림으로 전달한다. inputCorrectionLevel : QR코드의 보정값 수준이다. 보통 “L”… 더 보기 »코어이미지를 사용한 QRCode 생성기

이미지 리사이즈 방법 총정리 – Swift

최근에 이미지 크기를 일괄적으로 줄여서 리사이징하는 간단한 도구를 만들어 봤는데, 요상하게 결과 이미지가 흐려졌다. 결과가 맘에 들지 않아서 좀 더 고품질의 결과를 얻는 방법을 찾기 위해 이것 저것 조사해보니, iOS/macOS에서는 이미지 크기를 변환하는 다양한 방법이 있다는 것을 알게 되었다. 비트맵 이미지를 리사이징하는 다양한 방법들에 대해서 살펴보도록 하자. UIKit iOS에서는 간단하니 비트맵이미지 처리는 제법 쉬운 편이다. UIKit의 이미지 생성 관련 함수들을 사용하면 손쉽게 비트맵 이미지를 만들 수 있다.  방법은 단순한데, 목표 크기를 가지고 해당 크기에 맞는 비트맵 컨텍스트를 생성한다. (그러면 메모리상에… 더 보기 »이미지 리사이즈 방법 총정리 – Swift

코어 이미지를 통한 이미지 분석 예제

코어 이미지(Core Image)는 흔히 알려진 바와 같이 이미지에 대한 고성능 필터 효과 처리를 지원하는 프레임워크이면서 이미지에서 사람의 얼굴이나 QR코드, 텍스트를 탐지해내는 탐지 기능도 제공하고 있다. 코어 이미지가 제공하는 이미지 분석 기술을 제공하면 이러한 탐지를 빠르게 수행할 수 있을 뿐 아니라, 코어 이미지의 여러 필터 기능을 활용해서 찾아낸 부분을 하이라이트 처리하는 등의 기능을 손쉽게 구현할 수 있다. 이 글에서는 코어 이미지의 디텍터 클래스인 CIDetector를 사용하여 이미지에서 특정한 형상을 찾는 방법에 대해서 알아보고자 한다. 이미지에서 특정한 형상을 찾기 코어이미지가 제공하는 이미지 분석… 더 보기 »코어 이미지를 통한 이미지 분석 예제

NSPersistentContainer를 통한 코어데이터 스택생성하기

macOS Sierra로 업데이트되면서 코어데이터에 NSPersistentContainer 클래스가 추가되었다. 이 클래스를 사용하면 코어데이터 스택을 셋업하는 여러 귀찮은 과정을 생략하고 간단하게 처리할 수 있다. 사실 코어데이터 스택을 수동으로 셋업하는 과정에서 필요한 정보는 코어데이터 모델 파일의 이름과, 저장소 파일을 생성할 위치 정도이며, 그외의 대부분의 코드는 보일러 플레이트라 할 수 있다.  저장소 파일 위치는 적당한이름(?)으로 사용자 라이브러리 내에 만들어지므로 결국 최소한으로 필요한 정보는 데이터 모델 파일 이름이 된다. 즉 관리 객체 모델의 이름만 있다면 코어데이터 스택의 초기화에 필요한 코드는 사실상 동일하다 하겠다.

더 보기 »NSPersistentContainer를 통한 코어데이터 스택생성하기
Pages: 1 2

Segue를 통한 뷰 컨트롤러 전환과 데이터 교환 방법

꽤 오래전에 iOS에서 뷰를 전환하는 방법에 대해 글을 포스팅한 적이 있는데, 최근에도 비슷한 질문을 종종 받는다. 단순히 뷰를 표시하는 것보다는 어떻게 뷰 간에 데이터를 주고 받느냐는 것이다. 오늘은 이와 관련하여 스토리보드를 사용할 때의 방법 위주로 조금 자세히 살펴보도록 하겠다. 스토리보드 Segue에 의한 뷰 전환 스토리보드가 여전히 불편하다는 사람도 많이 있지만, 사실 스토리보드의 도입은 미리 정해진 콘티에 따른 콘텐츠 표시를 위한 목적의 앱을 코드 한 줄 없이 만들 수 있게 해준다는 점에서 높이 평가받을만 하다. 다만 문제는 그런식으로 만드는 앱은 큰… 더 보기 »Segue를 통한 뷰 컨트롤러 전환과 데이터 교환 방법

AutoLayout을 코드로 정의하기 (Swift)

오토레이아웃 오토레이아웃이 도입되기 이전에도 코코아 및 코코아터치에서는 상위뷰나 윈도가 크기가 변하는 경우에 하위 뷰들의 크기가 그에 따라 어떻게 변할 것인지를 결정해주는 방법이 있었다. 흔히 spring & struts라 불리는 오토리사이징 마스크가 그것이다. 하지만 오토 리사이징 마스크는 한 가지 문제가 있는데, 그것은 오토 리사이징 마스크는 수퍼뷰와 서브뷰 둘 사이의 관계만을 정의하기 때문에 이를 따라 뷰의 크기나 위치가 움직일 때 서브 뷰 간의 레이아웃이 흐트러질 수 있는 가능성이 매우 많다는 것이다. 그리하여 예전에는 화면의 회전이나 키보드가 올라오는 등의 과정이 발생하면[^0-1] 뷰의 크기가 전환되는데… 더 보기 »AutoLayout을 코드로 정의하기 (Swift)

스크롤 뷰 사용하는 방법 – UIScrollView

제한된 크기의 스크린을 가지고 있는 iOS 기기에서 고해상도의 이미지를 보여줄 때는 화면에 맞게 이미지 사이즈를 축소하거나, 화면상에 이미지의 일부만을 표시하면서 스크롤을 통해서 이미지를 탐색하게 한다. 스크롤뷰는 이러한 포토뷰어 등에서 많이 사용되며, 이를 위해 코코아 터치에서는 UIScrollView를 제공한다. UIScrollView는 간단한 코드로도 기본적인 스크롤 뷰 기능을 제공하며, 손쉽게 핀치를 통한 줌인/줌아웃을 지원할 수도 있다. 이 포스트에서는 UIScrollView를 생성하고 추가하는 기본적인 사용에서 핀치를 통한 줌인/줌아웃과 더블 탭을 통한 자동 확대를 어떻게 구현하는지 설명할 것이다.
더 보기 »스크롤 뷰 사용하는 방법 – UIScrollView

Nib 파일로부터 UI 관련 객체를 로딩하기

nib 파일에서 뷰/뷰컨트롤러를 가져오기

UIView를 상속받은 커스텀 뷰를 작성할 때, 뷰의 서브 뷰들을 일일이 동적으로 구성하는 것보다 인터페이스 빌더를 통해서 구성하는 것이 더 편한 경우가 있다. 흔히 테이블 뷰의 셀에 쓰이는 뷰가 이런 식으로 구성하기 좋다.  코드 상으로 모든 뷰의 구성 요소들을 일일이 구성하고 초기화하는 것은 너무 번거로우니, 메인 스토리보드와는 별개의 nib 파일에 뷰를 세팅하고 이를 로드하는 방식으로 좀 더 간결하고 예쁘게 처리할 수 있는 방법이 있을지 고민해보자.더 보기 »Nib 파일로부터 UI 관련 객체를 로딩하기

iOS에서 사용할 수 있는 애니메이션 구현 기법들에 대한 정리

애니메이션 구현 방법

iOS의 애니메이션 구현은 크게 두 가지로 나눌 수 있는데 하나는 UIKit의 애니메이션 API를 사용하는 것이고, 다른 하나는 코어 애니메이션을 사용하는 것이다. 오늘은 각각의 세부적인 구현보다는 각각의 API의 차이와 기본적인 사용방법에 대해서 살펴보도록 하겠다.더 보기 »iOS에서 사용할 수 있는 애니메이션 구현 기법들에 대한 정리

Tap and Hold 구현하기 – iOS, Swift

tap and hold 구현하기

UIButton은 기본적으로 단일 탭에 대해서 액션 메시지를 발신하게끔 디자인되어 있고, 따라서 별도의 UITapGestureRecognizer가 없어도 동작할 수 있다. 하지만 더블탭, 트리플 탭이나 길게 누르기등의 동작에 대해서는 여타 다른 UIView들과 마찬가지로 동작 인식기를 필요로한다. 더 보기 »Tap and Hold 구현하기 – iOS, Swift