OS ๊ฐ๋ฐ์์ ๊ธฐ๋ณธ ๋ด์ฅ ํฐํธ ๋ง๊ณ ์ปค์คํ ํฐํธ๋ฅผ ์ถ๊ฐํด์ ์ฌ์ฉํ๊ณ ์ถ์ ์๊ฐ ์๋๋ฐ์.
์ค๋์ iOS UIKit ํ๋ก์ ํธ์ ์ปค์คํ ํฐํธ๋ฅผ ๋ฃ์ด ์ฌ์ฉํ๋ ๋ฒ์ ์์ ๋ณด๊ฒ ์ต๋๋ค!
1. Font ํด๋ ๋ง๋ ํ ๊ทธ ์์ ํฐํธํ์ผ ๋ฃ๊ธฐ
๋จผ์ ํ๋ก์ ํธ์ ๋ค์ด๋ฐ์ ํฐํธ .otf๋ .ttf ํ์ผ์ Xcode ํ๋ก์ ํธ์ ๋์ด๋ค ๋ฃ์ด์ฃผ๋ฉด ๋๋๋ฐ์.
ํฐํธ๋ฅผ ํ ํด๋์ ๋ฃ์ด ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ๋ Xcode ์ผ์ชฝ ๋ค๋น๊ฒ์ด์ ์์ญ์์ ํ๋ก์ ํธ ํด๋ ๋ฐ์ Font ํด๋๋ฅผ ์์ฑ ํด์ค ํ ๊ทธ ์์ ํฐํธ ํ์ผ์ ๋์ด๋ค ๋ฃ์ด์คฌ์ต๋๋ค.
2. Add to targets ์ฒดํฌํด์ฃผ๊ธฐ
ํ์ผ์ ํ๋ก์ ํธ์ ๋์ด๋ค ์ถ๊ฐํ๋ฉด ์์ ๊ฐ์ ์ฐฝ์ด ๋จ๋๋ฐ Add to target์ ์ฒดํฌํด ์ค๋๋ค.
์ฌ๊ธฐ์ ์ฒดํฌํด์ฃผ์ง์์ผ๋ฉด ๋์ค์ ํฐํธ ํ์ผ๋ง๋ค ๋ค์ด๊ฐ์ Target Membership ์ฒดํฌ๋ฅผ ํด์ค์ผ ํด์ ๋ฒ๊ฑฐ๋ก์์.
Finish๋ฅผ ๋๋ฅด๋ฉด ์ ์ถ๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
3. info.plist์ ํฐํธ๋ช ์ถ๊ฐํ๊ธฐ
๋จผ์ , ์ผ์ชฝ์ ๋ค๋น๊ฒ์ด์ ์์ญ์์ info.plist๋ฅผ ์ ํํฉ๋๋ค.
๐ก info.plist๋? (Information Property List)
์ฐ์ , ํ๋กํผํฐ ๋ฆฌ์คํธ(property list)๋ iOS, NeXTSTEP ๋ฑ์ ์ด์ฉ๋๋ ๊ฐ์ฒด ์ง๋ ฌํ๋ฅผ ์ํ ํ์ผ์ ๋๋ค. .plist๋ผ๋ ํ์ฅ์๋ฅผ ๊ฐ์ง๋๋ค.
Info.plistํ์ผ์ iOS์์์คํ ํจํค์ง์ ๊ดํ ํ์ ์ค์ ์ ๋ณด๊ฐ ํฌํจ๋ ๊ตฌ์กฐํ๋ ํ ์คํธ ํ์ผ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ ๋์ฝ๋ UTF-8๋ก ์ธ์ฝ๋ฉ๋๋ฉฐ ๋ด์ฉ์ XML์ ์ฌ์ฉํฉ๋๋ค.
root XML๋ ธ๋๋ ํค, ๋ฐธ๋ฅ(Keys and Value)๋ก ๊ตฌ์ฑ๋ ๋์ ๋๋ฆฌ ํํ์ด๋ฉฐ, ์์คํ ์ ์ด ํค์ ๊ฐ์ ์ฌ์ฉํ์ฌ ์ฑ๊ณผ ์ฑ์ ์ค์ ์ ๊ฐ์ ธ์ต๋๋ค.
๋ฐ๋ผ์ ํ๋ฌ๊ทธ์ธ, ํ๋ ์์ํฌ, ์ฑ์ Info.plist๊ฐ ์์ด์ผ ํฉ๋๋ค.
๋ ์์ธํ ์ ๋ณด๋ ๐Apple ๋ฌธ์ ์์ ๋ณผ ์ ์์ต๋๋ค.
Key ํญ๋ชฉ ์ค Information Property List๋ฅผ ์ ํํํ ์ค๋ฅธ์ชฝ + ๋ฒํผ์ ๋๋ฆ ๋๋ค.
Information Property List์ ํ๋ฌ์ค ๋ฒํผ ๋๋ฅธ ํ
Fonts provided by application ์ ๋ ฅํ๊ณ ์ ํํ์ฌ ์ถ๊ฐํฉ๋๋ค.
Fonts provided by application ์์ + ๋ฒํผ์ ๋๋ฌ ์ถ๊ฐํ ํฐํธํ์ผ๋งํผ item์ ์ถ๊ฐํํ Value ๊ฐ์ ํฐํธ ํ์ผ๋ช ์ผ๋ก ๋ฐ๊ฟ์ค๋๋ค. ์๋ชป ์ถ๊ฐํ ๊ฒฝ์ฐ์๋ - ๋ฒํผ์ ๋๋ฌ ์ญ์ ํ๋ฉด ๋ฉ๋๋ค.
ํ์ผ ๋ช ์ ์ ๋ ฅ ํ ๋๋ .otf, .ttf ๋ฑ์ ํ์ฅ์๊น์ง ํฌํจํ์ฌ ์ ๋ ฅํด์ค๋๋ค.
4. ๊ฐํธํ๊ฒ UIFont์ ์ต์คํ ์ ์ถ๊ฐํด์ฃผ๊ธฐ
์ฝ๋๋ก ๋ทฐ๋ฅผ ์งค ๋ ํฐํธ๋ฅผ ์์ฝ๊ฒ ์ค์ ํด์ฃผ๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ด UIFont์ ์ต์คํ ์ ์ ์ถ๊ฐํด์ ์ฌ์ฉํ๋ฉด ๋์ฑ ํธํ๊ฒ ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
UIFont++.swift
import UIKit
//AppFontName์ด๋ผ๋ ์ด๋ฆ์ struct๋ฅผ ์์ฑํ์ฌ ๊ทธ ์์ ๊ฐ ํฐํธํ์ผ๋ช
์ ๊ฐ๋จํ ์์๋ก ์ ์ธ
struct AppFontName {
static let DINEng = "DINEngschriftStd"
static let DINMittel = "DINMittelschriftStd"
static let DINBdCond = "DINNeuzeitGroteskStd-BdCond"
static let DINLight = "DINNeuzeitGroteskStd-Light"
static let DINProblack = "DINPro-Black"
static let DINProBold = "DINPro-Bold"
static let DINProLight = "DINPro-Light"
static let DINProMedium = "DINPro-Medium"
static let DINProRegular = "DINPro-Regular"
static let HanSansBold = "SpoqaHanSansNeo-Bold"
static let HanSansLight = "SpoqaHanSansNeo-Light"
static let HanSansMedium = "SpoqaHanSansNeo-Medium"
static let HanSansRegular = "SpoqaHanSansNeo-Regular"
static let HanSansThin = "SpoqaHanSansNeo-Thin"
}
extension UIFont{
//์ธ์๋ก size๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ํด๋น size์ ๊ธ๊ผด์ UIFont ๋ฆฌํดํ๋ ํจ์ ์์ฑ
//ํฐํธ๋ช
์ ์ด์ฉํ์ฌ ํจ์๋ช
์ค์
class func dinEngFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.DINEng, size: size)!
}
class func dinMittelFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.DINMittel, size: size)!
}
class func dinBdCondFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.DINBdCond, size: size)!
}
class func dinLightFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.DINLight, size: size)!
}
class func dinProBlackFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.DINProblack, size: size)!
}
class func dinProBoldFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.DINProBold, size: size)!
}
class func dinProLightFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.DINProLight, size: size)!
}
class func dinProMediumFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.DINProMedium, size: size)!
}
class func dinProRegularFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.DINProRegular, size: size)!
}
class func hanSansBoldFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.HanSansBold, size: size)!
}
class func hanSansLightFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.HanSansLight, size: size)!
}
class func hanSansMediumFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.HanSansMedium, size: size)!
}
class func hanSansRegularFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.HanSansRegular, size: size)!
}
class func hanSansThinFont(ofSize size: CGFloat) -> UIFont {
return UIFont(name: AppFontName.HanSansThin, size: size)!
}
}
UIFont์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์์๋ ๋ฐ๋ก UIFont์์ ํจ์๋ฅผ ๊ฐ์ ธ์ UIFont.hansSansBoldFont() ์ด๋ฐ์์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ํด๋์ค ํจ์๋ก ๋ง๋ค์ด์คฌ์ต๋๋ค.
์ฌ์ฉ์์
๋ค์๊ณผ ๊ฐ์ด UIFont๋ฅผ ์น ํ ์๋์์ฑ ๊ธฐ๋ฅ์ผ๋ก ์ํ๋ ํฐํธ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ด์ฆ๋ฅผ ์ง์ ํ๋ฉด ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
//Snapkit๊ณผ Then ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ฝ๋
private let titleLabel = UILabel().then{
$0.text = "์ฝ์ ์ ์ฒญ"
$0.font = UIFont.hanSansBoldFont(ofSize: 18)
}
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] ์ ์ค์ณ๋ก ๋๋ก ์กฐ์ข ํ๋ AI์ฑ ๋ง๋ค๊ธฐ (1) - ํ๋ก์ ํธ ๊ตฌ์กฐ์ MediaPipe์์ ๊ณ ๋ (0) | 2023.02.22 |
---|---|
[iOS] pod init ์ค๋ฅ ์ ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2023.02.17 |
[iOS] addsubview()์ ํ๋ฒ์ ์ฌ๋ฌ subview ์ถ๊ฐํ๊ธฐ (0) | 2023.02.14 |
[iOS] Xcode์ Target ์ด๋? (0) | 2023.02.13 |
[iOS] iOS Concurrency - 1. GCD/Operation, ๋๊ธฐ/๋น๋๊ธฐ, ์ง๋ ฌ/๋์ (0) | 2023.02.11 |