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

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

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

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

UIApplicationMain

UIApplicationMain UIKit에서 앱의 런칭 프로세스를 처리하는 함수. UIApplication 객체를 생성하고, 앱의 기본 설정을 Info.plist 파일로부터 읽어들인다. int UIApplicationMain(int argc, char *argv[], NSString *pricipalClassName, NSString *delegateClassName); principalClassName : UIApplication 클래스를 서브클래싱한 경우 해당 클래스 이름을 전달한다. nil을 쓰는 경우 이 값은 UIApplication으로 고정된다. delegateClassName : 앱 델리게이트 클래스 이름. 만약 nib 파일 내에 앱 델리게이트 객체가 정의되어 있다면 nil을 전달해야 한다.

iOS에서 SQLite3 사용하는 방법 (Objective-C)

Swift3 버전에 대한 SQLite3 사용법은 이 포스트를 참고하시라. 예전에 쓴 글이 있기는 하지만, 그냥 요리법처럼 쓴 글이기도 하거니와 소스코드에서 뭔가 글자가 빠지는 등(syntax highlighter를 안써야 겠지만 기존 글 고치기가 귀찮아…) 문제가 많아 내용을 보충해서 다시 작성. 애플은 SQLite3를 직접 인터페이스하는 것보다는 코어데이터를 사용하라고 권장하고 있고, (실제로 있다가 빠진 것인지는 알 수 없으나 그런 주장을 하는 사람들이 종종 있다) 애플 개발자 문서에서도 관련 내용을 내렸다고 한다. (하지만 이는 사실이 아닐 거라 생각한다. 왜냐면 iOS에서 SQLite3를 인터페이스 하는 부분은 전적으로 libsqlite3를 사용하는

[Cocoa Touch] 뷰 트랜지션 애니메이션 구현하기

트랜지션(transition)은 뷰가 갑자기 나타내거나 없어지거는 것과 관련하여 보다 나은 사용자 경험을 제공할 수 있도록 해준다. 트랜지션 역시 뷰 애니메이션이므로 UIView의 애니메이션 메소드를 사용하거나 코어 애니메이션을 사용하여 구현하는 두 가지 방법 중 하나를 선택할 수 있다. UIView 애니메이션으로 뷰 트랜지션 구현 UIView 애니메이션에서 지원하는 트랜지션은 크게 두 가지로 나뉜다. 기존의 뷰의 서브 뷰들을 바꾸기 – 비교적 작은 뷰의 변경에 속한다. 뷰를 새로운 뷰로 대체하기 – 화면상에서 변경이 일어나는 영역이 많을 때 뷰 트랜지션은 뷰 컨트롤러에 의한 트랜지션과는 다르다. 뷰 컨트롤러 트랜지션은