2014년 2월 27일 목요일

[Objective-C] 변수의 값이 변하는 것을 추적하는 방법

iOS에선 UIView의 크기가 변하면 자동으로 서브뷰(Subviews)도 그와 함께 리사이즈 되도록 하는 기능이 존재한다. 하지만 subview가 바뀌었을 때 그 상위의 UIView의 크기가 따라 바뀌는 등의 기능은 제공하지 않는다. 따라서 코드레벨로 좀 수동으로 구현하는 것을 먼저 생각하게 될 것이다.

이번 포스팅은 위 예제상황에서 좀 더 편한 코딩을 하기 위해 '변수 값의 변화를 추적하는 것'에 대한 글이다. (정확히는 UIView와는 직접적인 관계가 없고 Objective-C 의 Key-Value Coding 과 관련된 내용이다)

[참고] 이 글은 옛날 글입니다. 새 글은 'KVO (Key-Value Observing) 소개' 글을 참고 바랍니다.

2014년 2월 26일 수요일

[iOS/OSX] NSDate로 상대 시간 구하기

NSDate 로 상대적인 시간 (예를 들어 D-day 처럼 지금부터 얼마의 시간이 남았나 등)을 계산해내려면 NSDate 클래스 만으론 불가능하고 NSCalendar를 이용해 계산해야 한다.

[iOS] 문자메세지(SMS) 보내기 MFMessageComposeViewController 예제

아이폰용 앱에서 텍스트메시지(SMS)를 코드레벨에서 그냥(!) 보내기란 사실 불가능하다. 안드로이드 퍼미션만 확보하면 앱에서 마음대로 보내는 것이 iOS에서는 불가능하다는 이야기다. (물론 이 불편함 덕분에 아이폰은 보안이라는 다른 이득을 취했다)

그나마 다행인 점은 iOS에서 이런 SMS를 보내기 위한 수동적인 장치는 제공한다는 점이다. MFMessageComposeViewController 가 바로 이런 역활을 하는 프레임웍이다.

[iOS] 라벨에 링크 넣기 TTTAttributedLabel 예제

Cocoa Touch 프레임워크에서 제공되는 UILabel 은 UI에 글자를 표시하기 위한 가장 기본적인 컴포넌트이다. 하지만 텍스트를 표시하기 위한 기능이 풍부하다고는 할 수 없다. 예를 들어 세로 정렬(Vertical Align) 이라던가 문자열에 링크를 넣어 이 링크가 터치되었을 때의 반응을 처리한다던가 등의 기능이 제공되지 않는다.

이번 포스팅은 3rd-Party 확장 클래스인 TTTAttributedLabel에 대한 소개 및 간단한 예제에 관한 것이다. 이 확장은 아래 github 저장소에서 구할 수 있다.

2014년 2월 25일 화요일

[iOS] NSJSONSerialization 예제

옛날 옛적(?)에 iOS용 앱을 만들 때 JSON을 파싱하거나 인코딩 하려면 SBJson 이나 JSONKit 같은 외부 코드가 필요했다. 하지만 (제법 오래 전에) Cocoa 프레임워크에서 자체적으로 JSON에 관련된 프레임웍을 제공하기 시작했다. 그 이름하여 NSJSONSerialization 클래스이다.

[iOS] UIFont 예제

UIFont는 이름 그대로 폰트를 정의하는 클래스다. 수 많은 글자를 표시하는 UI 클래스에서 폰트를 명시하기 위해 사용하는 중요한 클래스이다.

2013년 11월 28일 목요일

[Emacs] visual-regexp, 인터랙티브한 문자열 변경 확장

Emacs에서 기본적으로 제공되는 문자열 변경 함수(query-replace 등등)는 굉장히 불친절(?)하다. 뭔가 비쥬얼적으로 인터랙티브하게 변화되는 부분을 보여주지 않음을 안타까워 하며 관련 확장을 찾아보다 visual-regexp 라는 확장을 발견하게 되었다.

2013년 11월 21일 목요일

[Emacs] 멀티 쉘 버퍼 shell-switcher

Emacs의 특수한 술인 Eshell은 하나의 버퍼만 사용이 가능하다. 하지만 shell-switcher 확장을 이용하면 다수의 Eshell 버퍼를 띄우는 것이 가능하다.

2013년 11월 13일 수요일

[Emacs] 자동 페어(?) 확장 Smartparens

Emacs에는 여는 괄호가 입력되었을 때 자동으로 닫는 괄호를 입력해 주는 확장이 많다. 예를 들어 textmate-mode 라던가 autopair, paredit 등등... 이번에는 새롭게 발견한 Smartparens를 간단히 소개한다.

2013년 11월 11일 월요일

[iOS] 화면이 꺼지는 것을 막기

굉장히 단순한 포스팅이지만 메모메모~ 특별한 경우 (예를 들어 게임 등) 화면이 자동으로 꺼지지 않기가 필요 할 때가 있다. 이럴 때는 다음 한 줄의 코드로 화면 자동 꺼짐을 막을 수 있다.