TIL 25: HTML 태그가 포함된 텍스트 변환하기

TL;DR

  • HTML 태그가 포함된 텍스트는 NSAttributedString 클래스를 이용해 일반 텍스트로 변환할 수 있다.
  • 텍스트 변환 후에는 적용되었던 텍스트 스타일이 초기화되므로 재설정 해줘야 한다.
  • 요구사항에 따라 깔끔하게 텍스트 스타일을 유지하며 변환하는 것이 힘들 수 있다.

불편한 iOS의 HTML 텍스트 변환

이번에 사내 앱 프로젝트에서 HTML 태그가 포함된 텍스트를 변환해 텍스트 스타일을 적용하는 요구사항이 생겼다. 그래서 바로 리서치를 해보니, 안드로이드에서 간단히 Html 클래스를 이용하는 것처럼, iOS에서도 NSAttributedString 클래스를 이용해 간단히 처리할 수 있나 했더니 오산이었다.

NSAttributedString 클래스를 이용해 변환하면, 기존에 적용되었던 폰트 등의 텍스트 스타일이 모두 초기화되는 것이었다. 요구사항에서 언급된 HTML 태그로는 <b>, <i>, <u> 등과 같은 볼드, 이탤릭, 밑줄 처리를 하는 텍스트 스타일이었다. 그래서 텍스트 변환 후에 일일이 각 텍스트 스타일이 적용된 부분을 찾아 폰트를 변경하는 처리를 해야 했는데, 생각만큼 쉽게 모든 스타일이 적용되지 않았다.

또 다른 방법으로는 기존 HTML 태그가 포함된 텍스트를 원하는 폰트, 글자 색깔, 글자 크기 등의 값을 설정할 수 있는 태그로 감싸고, 그것을 변환하는 것이었다. 만약, 각 텍스트 스타일마다 폰트를 다르게 적용하는 처리가 필요하다면 더 복잡할 수 있다. 다행히 현재 프로젝트에서는 애플 시스템 폰트를 기본으로 사용하고 있기 때문에 문제가 없었다.

우여곡절 끝에 요구사항을 구현할 가닥이 어느 정도 보였지만, 아직 실험할 것이 남았다. 그래도 잘 마무리 될 것 같은 생각에 안도감이 들었다. 많이 쓸만한 기능이라 iOS에서 잘 준비되어 있었을 것 같았는데 생각보다 구현이 불편해 많이 당황스러웠다. 이런 이슈를 경험할 기회가 생겨서 다행인 것 같다. 😂

TIL 26: Xcode 파일 Header Comment 통일 TIL 24: 무한 스크롤을 위한 페이징 API 설계