์ด์ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ UI์ ๋ฟ๋ ค์ฃผ๋ ์์ ์ค ๋์ ํ ๊ฐ๋งํ ์์ ์ ์๋ ์ด์๊ฐ ๋ฐ์ํ์ต๋๋ค. ํ ์คํธ ๊ฐ ์์ html ํ๊ทธ๊ฐ ํฌํจ๋์ด ์์ด ๋ผ๋ฒจ์ ๊ทธ๋๋ก ํํ๋๊ณ ์๋ ๊ฒ์ ๋๋ค. ํจ๊ณผ๊ฐ ์ ์ฉ์ด ๋๊ฑฐ๋ ์ฌ๋ผ์ง๊ธธ ์ํ๋๋ฐ ์ ๊ฑฐํ๋ ๋ฐฉํฅ ์ชฝ์ผ๋ก ๊ฐ๊ธฐ๋ก ํ์ด์. ์ข์ ์ต์คํ ์ ์ด ์์ด์ ๊ทธ๋๋ก ๊ฐ์ ธ์์ ์ฌ์ฉํด๋ดค๋๋ฐ ๊น๋ํ๊ฒ ์ ์ฉ์ด ๋์์ต๋๋ค. ์ต์คํ ์ ์ ์ดํดํ๋ ์๊ฐ๋ ๊ฐ์ง ํ์๊ฐ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฐ์ ์ ๊ทธ๋ฅ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ํ๊ฒ ์ต๋๋ค~! ์ถ๊ฐ๋๋ ๋ด์ฉ์ด ์์ผ๋ฉด ์ ๋ฐ์ดํธ ํ๋๋ก ํ๊ฒ ์ต๋๋ค :)
// ํ
์คํธ์ ํฌํจ๋์ด ์๋ HTMLํ๊ทธ ์ ๊ฑฐํ๊ธฐ (์ต์คํ
์
)
extension String {
// html ํ๊ทธ ์ ๊ฑฐ + html entity๋ค ๋์ฝ๋ฉ.
var htmlEscaped: String {
guard let encodedData = self.data(using: .utf8) else {
return self
}
let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
]
do {
let attributed = try NSAttributedString(data: encodedData,
options: options,
documentAttributes: nil)
return attributed.string
} catch {
return self
}
}
}
// ์ฌ์ฉ๋ฒ
public func configureCell(imageURL: String, title: String, director: String, actor: String, pubDate: String) {
...
// ๋ค์๊ณผ ๊ฐ์ด String ๊ฐ ๋ค์ .htmlEscaped๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉ
titleLabel.text = title.htmlEscaped
...
}
์ฐธ๊ณ ๋ ํผ๋ฐ์ค ์ถ์ฒ
[UILabel-HTML] UILabel์ HTML load ํ๊ธฐ ๋๋ HTML ์ฝ๋๋ฅผ ๋บ ํ ์คํธ๋ฅผ ๋ฃ์ด์ฃผ๊ธฐ
'๐ iOS & Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] Associated Type (3) | 2021.09.05 |
---|---|
[iOS] Typealias, ํ์ ๋ณ์นญ ์ฌ์ฉํ๊ธฐ (3) | 2021.09.02 |
[iOS] Convenience init(ํธ์ ์ด๋์ ๋ผ์ด์ ) (2) | 2021.08.22 |
[iOS] frame๊ณผ bounds (0) | 2021.08.20 |
[iOS] ์ต์ ๋, Optional (0) | 2021.08.18 |