YATA

YATA는 macOS용 자작 앱으로 Yet Another Telegra.ph App을 의미하는 약어이다. 약 2달 반 정도 개발하면서 생각나는 것들을 정리해본다.

YATA

Cocoa 텍스트 시스템

Bold, Italic 등 텍스트 서식을 지원하기 위해 Cocoa의 텍스트 시스템을 알아보기 시작했다.

Cocoa Text Architecture Guide 문서를 보자마자 “헉??!!” 소리가 먼저 나왔다. 한눈에 봐도 방대해 보였다. ㅠ.ㅠ

문서를 훑어보고 필요한 부분만을 먼저 찾아보기 시작했다. NSTextView를 사용하여 텍스트를 보여주고 있었기에 이 텍스트에 서식을 지정하는 부분을 보니 대략 다음과 같다.

  • 텍스트는 NSTextView의 textStorage에 저장
  • textStorage는 NSAttributedString을 상속
  • NSAttributedString에서 텍스트에 속성을 지정하여 텍스트에 서식을 지정

Playground에서 테스트

NSAttributedString을 잘 모르기에 Playground에서 더듬더듬 하나씩 테스트하면서 알아보기 시작했다.

알고 싶은 서식들은 Telegra.ph의 웹에서 제공하는 서식들이다. 대략 다음과 같은 서식들을 어떻게 지정하는지 궁금했다.

  • Bold
  • Italic
  • Link
  • 들여쓰기
  • 가운데 정렬

테스트 결과 NSAttributedString에서 해당하는 속성을 추가하면 원하는 결과를 얻을 수 있었다.

  • Bold는 Bold 서체를 사용
  • Italic은 서체의 특징을 italic으로 지정
  • Link는 Link 속성으로 URL을 지정
  • 들여쓰기는 문단 속성에 들여쓰기 크기 지정
  • 가운데 정렬은 문단 속성에 가운데 정렬 지정

Playground에서 NSTextView를 붙여 바로바로 보면서 테스트하니 재미있다.

텍스트 서식 테스트

텍스트 모양 지정 기능 추가

서식 지정하는 방법을 학습했으니, 이를 YATA에 추가했다.

먼저 Bold, Italic, Link를 메뉴와 툴바에 추가했다. 단축키도 지정해서 선택된 텍스트에 바로 동작하게 구현했다.

Link의 경우 링크를 입력받을 수 있는 작은 창을 띄웠다.

Link 지정 기능

문단 모양 선택 기능 추가

Telegra.ph 웹을 참고하여 다음 5가지 정도의 문단 스타일을 제공하게 구현했다.

툴바에 버튼을 추가 후, 누르면 popover 형태로 선택 버튼을 보여준다.

문단 모양 선택 기능

Comments