์ง๊ธ ์ ํ ๋๋ฒจ๋กํผ ์์นด๋ฐ๋ฏธ์์ ๋ง์ง๋ง ํ๋ก์ ํธ๋ฅผ ์งํ์ค์ด๋ค.
์ด์ด ์ข๊ฒ๋, ์ ๋ง ํ๊ณ ์ถ์ ํ์๊ณผ ํ์ ์ด๋ฃฐ ์ ์๊ฒ ๋์๊ณ , ๊ทธ์ค์์ ๊ฐ์ฅ ๊ฐ์ด ๊ฐ๋ฐ๊ณต๋ถ๋ฅผ ํด๋ณด๊ณ ์ถ์๋,, ์๋ฌธ๋ '๊ฐ๋'์ ํจ๊ปํ ์ ์์๋ค. ๊ฐ๋ฐ์ ์ธ ์ธก๋ฉด, ๊ทธ๋ฆฌ๊ณ ์ํตํ๋ ๋ฐฉ์, ๊ฐ๋ฐ์ฒ ํ ๋ฑ์์ ์ ๋ง ๋ฐฐ์ธ๊ฒ ๋ง์๋ค. ์ค๋๋ถํฐ ๊ฐ๋๋ก๋ถํฐ ๋ฐฐ์ด ๊ฒ๋ค์ ํ๋์ฉ ์ ๋ฆฌํด๋๊ฐ๊ณ , ์จ์ ํ ๋์ ๊ฒ์ด ๋ ์ ์๋๋ก ๊ธ์ ๊พธ์คํ ์์ฑํ ๊ฒ์ด๋ค.
https://github.com/DeveloperAcademy-POSTECH/MacC-Team-EarthValley80
๐ฌ ์ค๋ ๋ถ์ํ ์ฝ๋
๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด, extension ์ ํ์ฉํ์ฌ ๋ค์ํ ๋ฉ์๋๋ฅผ ๊ตฌํํด๋๊ณ , ํธํ๊ฒ ๊ฐ๋ฐํ๋ ค๊ณ ํ๋ค. ๋ํ์ ์ผ๋ก UIColor๋ฅผ ์ด๋ฆ์ผ๋ก ์ง์ ํ ์ ์๋๋ก extension์ ๋ง๋ ๋ค๊ฑฐ๋, ์ฐ๋ฆฌ ์ฑ์ ๊ธ๊ผด์ ํธํ๊ฒ ์ ์ฉํ ์ ์๋๋ก ํ๊ฑฐ๋ ๋ฑ๋ฑ,,
๋ง์ง๋ง ํ๋ก์ ํธ์์ ์ฐ๋ฆฌ๋ '์ ๋ฌธ ๊ธฐ์ฌ ์ฝ๊ธฐ'์ ๊ด๋ จ๋ ์ปจํ
์ธ ๋ก ์ฑ๊ฐ๋ฐ์ ์งํํ๋ค.
์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ๊ฑด, '๊ธ์ ๋จ๋ฝ'์ ๋ํ ์คํ์ผ์ด์๋ค. ๋์์ด๋์ ์๋๋ฅผ ํค์น์ง ์๊ณ , text๋ค์ ์ฑ์ผ๋ก ์ ํํํด๋ด์ผํ๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ ํ์ ํ ๋ถ์ด UILabel์ ๋ํ extension์ ์์ฑํ๊ณ , ๊ธ์์ ์๊ฐ๊ณผ ํ๊ฐ์ ์กฐ์ ํ ์ ์๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋์ จ๋ค. ์ด ์ฝ๋์ ๋ํด์ ๋ถ์ํด๋ณด์.
๐ UILabel์ ๋ํ extension ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
์๋ ๊นํ๋ธ ๋งํฌ์์ setLineSpacing ๋ฉ์๋๋ฅผ ๋ณด๋ฉด ๋๋ค.
์ฝ๋๋ ๋ณด๊ธฐ ํธํ๊ฒ ์ ์๊ธ๋ก ํ๋ฒ ๋ ...
- UILabel์ ์๊ฐ๊ณผ ํ๊ฐ์ ์กฐ์ ํ๋ extension
extension UILabel {
func setLineSpacing(kernValue: Double = 0.0,
lineSpacing: CGFloat = 0.0,
lineHeightMultiple: CGFloat = 0.0) {
guard let labelText = self.text else { return }
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = lineSpacing
paragraphStyle.lineHeightMultiple = lineHeightMultiple
let attributedString:NSMutableAttributedString
if let labelattributedText = self.attributedText {
attributedString = NSMutableAttributedString(attributedString: labelattributedText)
} else {
attributedString = NSMutableAttributedString(string: labelText)
}
attributedString.addAttribute(NSAttributedString.Key.paragraphStyle,
value: paragraphStyle,
range: NSMakeRange(0, attributedString.length))
attributedString.addAttribute(NSAttributedString.Key.kern,
value: kernValue,
range: NSMakeRange(0, attributedString.length))
self.attributedText = attributedString
}
}
๐ฌ ์ ์ด์ ๊ถ๊ธํ์ ์ ํ์ด๋ณด์
1๏ธโฃ NSMutableParagraphStyle()
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = lineSpacing
paragraphStyle.lineHeightMultiple = lineHeightMultiple
setLineSpacing ๋ฉ์๋๋ก๋ถํฐ lineSpacing๊ณผ lineHeightMultiple์ ์ ๋ ฅ๋ฐ์์๋ค. ์ด๊ฒ ์๋ฏธํ๋๊ฒ ๋ญ๊น
NSMutableParagraphStyle()
๐ ๊ณต์๋ฌธ์
An object for changing the values of the subattributes in a paragraph style attribute.
๋จ๋ฝ ์คํ์ผ ์์ฑ์ ํ์ ์์ฑ ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํ ๊ฐ์ฒด์ ๋๋ค.https://developer.apple.com/documentation/uikit/nsmutableparagraphstyle
๋ง ๊ทธ๋๋ก ‘๋จ๋ฝ์ ์คํ์ผ์ ์ง์ ํ๊ธฐ ์ํ ๊ฐ์ฒด’์ด๋ค. ํด๋น ๊ฐ์ฒด๋ก ๋จ๋ฝ์ ์ฌ๋ฌ๊ฐ์ง ์คํ์ผ์ ์ ์ฉํ ์ ์๋ค. ์๋ฅผ๋ค์ด ํ ์คํธ ์ ๋ ฌ, ์๊ฐํ๊ฐ ๊ฐ๊ฒฉ, ๋ค์ฌ์ฐ๊ธฐ, ์ค ๋์ด ๋ฑ์ ๋ํ ์์ฑ์ ์ ์ฉ์ํฌ ์ ์๋ค. ์ด๋ค ์คํ์ผ์ ์ ์ฉ์ํฌ ์ ์๋์ง๋ ๊ณต์๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์.
์ฐ๋ฆฌ๋ ‘์๊ฐ๊ณผ ํ๊ฐ’์ ์กฐ์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๊ฐ์ง ๋ฉ์๋๋ฅผ ์ ํํ ๊ฒ์ด๋ค.
๊ทธ๊ฒ ๋ฐ๋กlineSpacing ๊ณผ lineHeightMultiple~
lineSpacing์ด๋
๐ ๊ณต์๋ฌธ์
The distance in points between the bottom of one line fragment and the top of the next.
ํ ์ค ์กฐ๊ฐ์ ๋งจ ์๋์ ๋ค์ ์กฐ๊ฐ์ ๋งจ ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ(ํฌ์ธํธ ๋จ์)์ ๋๋ค.
https://developer.apple.com/documentation/uikit/nsmutableparagraphstyle/1528742-linespacing
lineSpacing์ผ๋ก ํ๊ฐ์ ์กฐ์ ํ ์ ์๋ค.
lineHeightMultiple์ด๋
๐ ๊ณต์๋ฌธ์
The line height multiple. (๋ผ์ธ ๋์ด์ ๋ฐฐ์๋ฅผ ์ง์ ํ ์ ์๋ค.)
https://developer.apple.com/documentation/uikit/nsmutableparagraphstyle/1524596-lineheightmultiple
๐ค ์??? ๋ฌด์จ๋ง์ด์ผ;; ๋ผ์ธ ๋์ด์ ๋ฐฐ์๋ผ๋?
๋ง ๊ทธ๋๋ก ํ๊ฐ์ linespacing์ด๋ผ๋ ํค์๋๋ก๋ง ์ถฉ๋ถํ ์ปค๋ฒ ๊ฐ๋ฅํ์ง๋ง, line ๋์ด์ ๋ฐฐ์๋งํผ ๋์์ฃผ๊ธฐ ์ํด์ lineHeightMultiple๋ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค๊ณ ํ๋ค!!
์๋๋ lineSpacing๊ณผ lineHeightMultiple์ ์ฐจ์ด๋ฅผ ๋ฌป๋ ๋ด ์ง๋ฌธ์ ๋๋ตํด์ฃผ์ ์ฐ๋ฆฌ ํ์ ๊ฐ๋์ ์ค๋ช
2๏ธโฃ NSAttributedString()
attributedString.addAttribute(NSAttributedString.Key.paragraphStyle,
value: paragraphStyle,
range: NSMakeRange(0, attributedString.length))
attributedString.addAttribute(NSAttributedString.Key.kern,
value: kernValue,
range: NSMakeRange(0, attributedString.length))
NSAttributedString์ด๋
๐ ๊ณต์๋ฌธ์
A string with associated attributes (such as visual style, hyperlinks, or accessibility data) for portions of its text.ํ ์คํธ ๋ถ๋ถ์ ๋ํ ๊ด๋ จ ์์ฑ(์: ๋น์ฃผ์ผ ์คํ์ผ, ํ์ดํผ๋งํฌ ๋๋ ์ ๊ทผ์ฑ ๋ฐ์ดํฐ)์ด ์๋ ๋ฌธ์์ด์ ๋๋ค.
https://developer.apple.com/documentation/foundation/nsattributedstring
๊ทธ๋ ๋ค. NSMutableParagraphStyle ๋ก๋ ๋จ๋ฝ์ ์คํ์ผ์ ์กฐ์ ํ๊ณ , NSAttributedString์ผ๋ก๋ ํ ์คํธ์ ์คํ์ผ์ ์กฐ์ ํ ์ ์์๋ค. ์์์ ๋จ๋ฝ์ ์คํ์ผ์ ์ง์ ํด์ฃผ์๋ค. ์ด๊ฒ์ ํ ์คํธ์ ์ ์ฉํด์ผํ์ง ์์๊น?!๐
๊ทธ๋์ NSAttributedString.Key.paragraphStyle์ ์ ๊ทผํด์ ์ ์ฉํด์ฃผ๋๊ฒ์ด๋ค.
๊ทธ๋์ ์ด๋ ๊ฒ ํ ์คํธ์ ์คํ์ผ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์?
๋ด์ฅ addAttribute๋ฉ์๋์ NSAttributedString.Key ๋ฅผ ํ์ฉํ์
โ๏ธ NSAttributedString.Key ์ด๋?
์์ฑ์ด ์๋ ๋ฌธ์์ด์ ํ ์คํธ์ ์ ์ฉํ ์ ์๋ ์์ฑ์ ๋๋ค.
→ Key์๋ ๋ค์ํ ์์ฑ์ด ์๋ค. (๊ธ๊ผด, ์์, ๋ฐฑ๊ทธ๋ผ์ด๋, ํ์ดํผ๋งํฌ, ์ทจ์์ , ๊ตต๊ธฐ ๋ฑ! ๊ณต์๋ฌธ์์ฐธ๊ณ )
https://developer.apple.com/documentation/foundation/nsattributedstring/key
โ๏ธ func addAgttribute()
Adds an attribute with the given name and value to the characters in the specified range.
์ง์ ๋ ๋ฒ์์ ๋ฌธ์์ ์ง์ ๋ ์ด๋ฆ๊ณผ ๊ฐ์ ๊ฐ์ง ์์ฑ์ ์ถ๊ฐํฉ๋๋ค.
๐ ์ด๋ ๊ฒ ์๊ฒผ์ง๋กฑ
๐ ๋งค๊ฐ๋ณ์๋ก๋ ๋ญ๋ฐ์ง? (๋งค๊ฐ๋ณ์ ์ค๋ช !)
- name: ์์ฑ ์ด๋ฆ์ ์ง์ ํ๋ ๋ฌธ์์ด์ ๋๋ค. ์์ฑ ํค๋ ๋ค๋ฅธ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ์ ์ํ ์ฌ์ฉ์ ์ ์ ํค์ผ ์ ์๋ค.
- value: The attribute value associated with name.์์์ ์ ์ํ Key์ ์ ์ฉ๋ ์คํ์ผ์ ๋ฃ์ด์ฃผ์. ์ฐ๋ฆฌ ๊ฐ์ ๊ฒฝ์ฐ์๋, ์ฐ๋ฆฌ๊ฐ ์ง์ ํ ๋จ๋ฝ pargraphStyle์ ๋ฃ์ด์ฃผ์๋ค.
- range: ์ง์ ๋ ์คํ์ผ์ ์ด๋์๋ค๊ฐ ์ ์ฉํ ๊ฑด์ง ๋ฌธ์์ ๋ฒ์๋ฅผ ์ง์ ํด์คฌ๋ค..
< ๊ณต์๋ฌธ์ >
https://developer.apple.com/documentation/foundation/nsmutableattributedstring/1417080-addattribute
3๏ธโฃ Kern์ด๋?
์๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ํธํ๋ค. ์ ํ ๊ณต์๋ฌธ์์์๋ ‘๋ฌธ์์ ์ปค๋’ ์ด๋ผ๊ณ ํ๋๋ฐ ๋๋์ฒด ๋ฌด์จ๋ง์ด๋!
์ธ์์ ๋ชจ๋ ์ ๋ณด๊ฐ ๋ด๊ฒจ์๋ ๋๋ฌด์ํค์์ ๋ช ํํ๊ฒ ์๋ ค์ฃผ์๋ค.
๋ฌธ์์ ์ปค๋์ด๋, ์๊ฐ์ ์ผ๋ก ๋ง์กฑ์ค๋ฌ์ด ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด ๋น๋ก ๊ธ๊ผด๋ก ๋ฌธ์์ฌ์ด์ ๊ฐ๊ฒฉ์ ์กฐ์ ํ๋ ํ๋ก์ธ์ค์ด๋ค.
๋ฌด์จ ํ๋ก์ธ์ค,,ํ… ํด๋์ ๋ฌด์ธ๊ฐ๋ฅผ ๋งํ๋๊ฒ ๊ฐ์๋ฐ, ์ด์จ๋ ์๊ฐ์ ์กฐ์ ํ๋ ํค์๋๊ฐ kern ์ด๊ตฌ๋!
๐ฌ ๋ง๋ฌด๋ฆฌ
์ค๋ ์ด๋ ๊ฒ ํ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ํ๋ํ๋ ์์ธํ๊ฒ ์์๋ณด์๋ค. ์ด๋ ๊ฒ ์์๋ณด๋ ์๊ฐ์ ๋ฐ๋ก ๊ฐ์ง๋๊น ๋ ์ดํด๊ฐ ์์ ๋๊ณ , ์ด์ ๋จ์ด ๋ง๋ค์ด๋ extension์ ์ ํ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค.
์ด์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์, ๋จ์ด ๋ง๋ค์ด ๋ extension์ ์ ํ์ฉํ์ง ๋ชปํ์๋ค. ์ด๋ ๊ฒ ๋ถ์ํด๋ณด๊ณ ํ๋ํ๋ ํํค์น๋ฉด ๋ค ๋๋๊ตฌ๋! ๋ฟ๋ฏํ ํ๋ฃจ๋ค ๐ป๐