[UILabel-HTML] UILabel에 HTML load 하기 또는 HTML 코드를 뺀 텍스트를 넣어주기
[1] HTML 스타일 그대로 로드하기 (with 커스텀 설정)
UILabel에 HTML 스타일 그대로 로드할 수 있습니다. (폰트나 색깔 같은 것을 커스터마이징 할 수 있음)
예를들어 <b></b> 또는 <strong></strong> 태그로 감싸진 것을 볼드처리 해주고
html 태그들을 지워주고 html entity 들을 디코딩해줍니다. (html entity표 = 영어버전 및 한글버전)
저는 css style을 참고해서 extension을 만들었고
이런식으로 쓸 수 있습니다.
돌려보면 이렇게 스타일이 적용되고 + 으로 인코딩되었던 + 도 디코딩되어서 나옵니다..!!
참고로 저는 paragraph 스타일만 정의해줘서 html에 h1 같은 태그가 있으면 안먹힐 거에요..!
css문서보니까 h1 스타일을 따로 정의해주더라구요...!+!
하지만 지금 정해진 영역보다 텍스트가 더 많은데 three dot (...) 처리가 안되는 것을 보실 수 있습니다.
이 블로그를 보고 이렇게 스타일을 업데이트해봤는데도 ... 처리가 안되더라구요 😱 (왜 안될까요 흑... 너무 찝찝..)
[2] html을 다 제거해버린 텍스트를 넣어주기
1번처럼 html 스타일 적용안하고 html 관련 코드라면 다 제거해버리는 방법입니다.
이렇게 하면 html entity들을 디코딩해줄뿐만 아니라 html 태그들도 싹 지워줍니다.
아래와 같이 ViewController 코드를 바꾸고 돌려보면
이렇게 나옵니다.
[추가] html 태그들은 남기고, entity들만 디코딩하고 싶을때
2번과 달리 html 태그들은 남기고, entity들만 디코딩하고 싶을때가 있을 수도 있습니다.
HTMLEntityMapping을 하드코딩해놓고 활용하는 방법도 있습니다.
관련 오픈소스들도 있더라구요..! 몇개 첨부합니다
https://github.com/adela-chang/StringExtensionHTML
adela-chang/StringExtensionHTML
Contribute to adela-chang/StringExtensionHTML development by creating an account on GitHub.
github.com
https://github.com/IBM-Swift/swift-html-entities
IBM-Swift/swift-html-entities
HTML5 spec-compliant character encoder/decoder for Swift - IBM-Swift/swift-html-entities
github.com