2014년 2월 26일 수요일

[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] 화면이 꺼지는 것을 막기

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

2013년 9월 30일 월요일

[Python] 'in' 오퍼레이터 이야기

파이썬의 내장(built-in) 키워드 중 in 이라는 명령어는 다양한 용도로 이용 할 수 있다. 이 오퍼레이터의 용도는 이름에서 유추 가능하듯이 넓은(?) 어디에서(?) 무엇인가를 판단 혹은 지칭하는 것이다.

뭔가 말이 이상한데 예제를 통해 살펴보자.

2013년 9월 27일 금요일

[Cocoa] 코코아 바인딩 사용 시 데이터가 UI에 표시되지 않는 경우

OS X 용 앱의 UI를 개발 할 때 유용한 기능이 바로 코코아바인딩이다. 이 기능은 코드 레벨의 오브젝트(변수)와 UI 사이를 이어주어서 별 다른 코드 없이도 데이터를 UI에 렌더링 할 수 있게 해 준다.

그런데 바인딩을 제대로 했음에도 데이터가 표시되지 않거나 등의 문제를 겪을 수도 있다.