티스토리 뷰

728x90
반응형

[1] HTML 스타일 그대로 로드하기 (with 커스텀 설정)

 

UILabel에 HTML 스타일 그대로 로드할 수 있습니다. (폰트나 색깔 같은 것을 커스터마이징 할 수 있음) 

예를들어 <b></b> 또는 <strong></strong>  태그로 감싸진 것을 볼드처리 해주고

html 태그들을 지워주고 html entity 들을 디코딩해줍니다. (html entity표 =  영어버전 및  한글버전)

 

저는 css style을 참고해서 extension을 만들었고 

 

 

 

이런식으로 쓸 수 있습니다.

 

 

 

돌려보면 이렇게 스타일이 적용되고 &#43; 으로 인코딩되었던 + 도 디코딩되어서 나옵니다..!! 

 

 

 

 

참고로 저는 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

 

728x90
반응형
댓글
댓글쓰기 폼