(Swift) AutoLayout을 코드로 설정하는 방법

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

(Swift) Swift의 문자열과 NSRange

NSRange로 서브스트링 얻기 NSRange는 NSString의 서브스트링의 영역을 표시하기 위해 정의된 C 구조체 타입의 데이터 타입이다. NSString은 -substringWithRange:를 통해서 NSRange가 가리키는 범위의 부분열을 얻을 수 있는데, Swift의 String 타입은 당연히 NSRange와 호환되지 않는다. 그럼에도 불구하고 NSRegularExpression등의 클래스를 이용하는 경우, 문자열은 그대로 String 타입이지만, 매치 결과의 범위는 NSRange로 리턴되므로 이 두 타입간의 내용을 이어줄만한 장치가 필요하다. Swift의 문자열의 부분열 범위는 NSRange등의 독립 타입으로 표시할 수 없고, String.Index라는 타입을 이용해서 정의한다. 따라서 해당 문자열 인스턴스의 startIndex 속성으로부터 시작범위의 그 길이값 이후까지의 값을 매

(Swift) UIScrollView

UIScrollView 스크롤뷰는 뷰의 크기보다도 더 큰 콘텐츠를 표시해야할 때 사용되는 UIView의 서브 클래스로 흔히 포토 뷰어 등에 쓰이는 컨트롤이다. 스크롤뷰는 자체적으로 사용자의 터치 제스쳐를 인식하여 콘텐츠를 스크롤해준다. 스크롤 뷰는 내부적으로 표시를 위한 뷰 컴포넌트를 따로 갖고 있지는 않으며, 대신에 contentSize: CGSize라는 프로퍼티를 이용해서 스크롤뷰 자체가 화면에서 표시되는 크기에 대비하여 전체 콘텐츠 사이즈로 사용되는 영역이 얼마인지를 정의하고 이를 통해 어디서 어디까지 스크롤 할 것인지를 결정하게 된다.

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

nib 파일에서 뷰를 가져오기 UIView를 상속받은 커스텀 뷰를 작성할 때, 뷰의 서브 뷰들을 일일이 동적으로 구성하는 것보다 인터페이스 빌더를 통해서 구성하는 것이 더 편한 경우가 있다. 흔히 테이블 뷰의 셀에 쓰이는 뷰가 이런 식으로 구성하기 좋다. 메인 스토리보드와는 별개의 nib 파일에 뷰를 세팅하고 이를 로드하는 과정을 생각해보자.

iOS의 애니메이션 구현 방법 정리

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

(Swift) Objctive-C와 Swift 타입의 브릿징

브릿징 Swift의 많은 기본 타입들은 Objective-C의 파운데이션 타입에 대응되는 것들이 있고 (e.g. String <-> NSString) 이렇게 카운터파트가 존재하는 타입들은 파운데이션타입으로 브릿징된다. 브릿징은 Objective-C 타입이 Swift 타입으로 행동하거나 혹은 반대로 Swift 타입이 Objective-C 타입처럼 행동하여 이 둘을 상호간에 바꿔쓸 수 있음을 말한다. 다시 말해 파운데이션 API를 사용하면서 NSString 을 사용해야 할 때 String을 쓰거나 반대로 Swift 함수/메소드 호출 시 String 을 써야 할 때 NSString을 쓰는 것이 허용된다는 말이다. 1 Swift는 어떤 Objective-C 타입들을 자동으로 Swift 타입으로 변환하며, 그 반대의 동작도