Open chaneeii opened 2 years ago
import UIKit
protocol Font {
func of(size: CGFloat) -> UIFont?
}
extension Font where Self: RawRepresentable, Self.RawValue == String {
func of(size: CGFloat) -> UIFont? {
return UIFont(name: rawValue, size: size)
}
}
enum MavenPro: String, Font {
case bold = "MavenProBold"
case black = "MavenProBlack"
}
์ฌ์ฉ์
$0.font = MavenPro.bold.of(size: 30)
extension UIFont {
enum Family: String {
case Black, Bold, Light, Medium, Regular, Thin
}
static func roboto(size: CGFloat = 10, family: Family = .Regular) -> UIFont {
return UIFont(name: "Roboto-\(family)", size: size)!
}
}
์ฌ์ฉ์
let robotoBlack = UIFont.roboto(size: 10, family: .Black)
Tuist์์ Font ์ถ๊ฐ ์๋๋ ๋ฌธ์
์ปค์คํ ํฐํธ๋ฅผ ๋ฃ์ด์ผํ๋ ์ํฉ์ด ๋ฐ์ํ๋๋ฐ, ์๊พธ ์๋ฃ์ด์ ธ์ ์ด๋ฐ์ ๋ฐ ํด๊ฒฐ์ ํตํด ์ ๋ฃ๋ ํ์ ํฌํจํด์ ์์ฑํ๊ฒ ๋์๋ค.
0. ์ฐ์ ํฐํธํ์ผ ์ค๋นํ๊ธฐ
ttf, otf ํ์ผ์ ์ค๋นํด์จ๋ค!
1. ํฐํธ ํ์ผ์ ๋ฃ๊ธฐ
โ Add to targets ์์ ํ๋ก์ ํธ๋ช ์ ๊ผญ ์ฒดํฌํด์ค์ผํ๋ค โ ์ด๊ฑด ๊ผญ ์ํด๋ ๋๊ธดํ๋ ๊ฒ ๊ฐ์๋ฐ Create folder references ๋ก ์ฒดํฌํด์์ผ ํฐํธ๊ฐ ๋ค์ด๊ฐ๋ค. (ํ์ํด๋ ํ๋ํด๋ ์ฐจ์ด..๋์ค์ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค..!)
2. Info.plist ์์ ํฐํธ ํ์ผ ๋ฑ๋กํ๊ธฐ
โ Fonts provided by application ์ ํฐํธ ํ์ผ๋ช ์ ๊ทธ๋๋ก ํ์ฅ์๊น์ง ์ ๋ ฅํด์ค๋ค!
3. ํฐํธ์ ์ฉํ๊ธฐ
์๋ ๊ฒ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ฉด๋๋ค.
๐ TIP) ํฐํธ์ ์ง์ง ์ด๋ฆ์ ์์๋ณด์
๊ทผ๋ฐ ์ฌ๊ธฐ์ ํฐํธ๋ฅผ ์ ์ฉํ๋๋ฐ ํฐํธ๊ฐ ์ ๋๋ก ์ ์ฉ์ด ์๋๋ ๊ฒฝ์ฐ๊ฐ ์์ ์๋ ์๋ค. ์๊พธ ํฐํธ๊ฐ ์๋ ์ ์ฐพ์๋ณด๋ ํ์ผ๋ช ์ด๋ ํฐํธ ์ง์ง ์ด๋ฆ์ด ๋ฌ๋ผ์ ๊ทธ๋ ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋ค.
๊ทธ๋ด๋???? ์๋ ์ฝ๋๋ฅผ ์คํ์์ผ์ ์ง์ง ํฐํธ์ด๋ฆ์ ํ์ธํด๋ณด๋ฉด ๋๋ค!
-> ํ์ผ๋ช ์ด๋ ํฐํธ๋ช ์ด ๋ค๋ฅธ ๊ฑฐ ๋ฐ๊ฒฌ
references
https://velog.io/@minji0801/iOSSwift-Custom-Font-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-%EC%95%B1-%EB%82%B4-%ED%8F%B0%ED%8A%B8-%EB%B3%80%EA%B2%BD-%EA%B8%B0%EB%8A%A5