關(guān)于 TextKit 框架中的動(dòng)態(tài)類型和字體描述符特性载迄。
參考
- GitHub 源碼:shinobicontrols/iOS7-day-by-day
- 天天品嘗iOS7甜點(diǎn) :: Day 12 :: Dynamic Type and Font Descriptors
Dynamic Type - 動(dòng)態(tài)類型
動(dòng)態(tài)類型允許用戶指定他們?cè)O(shè)備中應(yīng)用程序內(nèi)部的字體類型大小竞端。
UIFontTextStyle 類型
// Font text styles
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleTitle1 NS_AVAILABLE_IOS(9_0);
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleTitle2 NS_AVAILABLE_IOS(9_0);
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleTitle3 NS_AVAILABLE_IOS(9_0);
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleHeadline NS_AVAILABLE_IOS(7_0);
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleSubheadline NS_AVAILABLE_IOS(7_0);
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleBody NS_AVAILABLE_IOS(7_0);
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleCallout NS_AVAILABLE_IOS(9_0);
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleFootnote NS_AVAILABLE_IOS(7_0);
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleCaption1 NS_AVAILABLE_IOS(7_0);
UIKIT_EXTERN UIFontTextStyle const UIFontTextStyleCaption2 NS_AVAILABLE_IOS(7_0);
Interface Builder 設(shè)置
代碼設(shè)置
// 設(shè)置子標(biāo)簽上的字體
self.subHeadingLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
樣式大小
當(dāng)應(yīng)用支持動(dòng)態(tài)字體后尚粘,我們可以到【設(shè)置】- 【顯示與亮度】-【文字大小】中修改:
最大號(hào)字體(滑塊位于最右邊)
中等字體(滑塊位于正中間)
最小號(hào)字體(滑塊位于最左邊)
Font Descriptors - 字體描述符
可以利用字體描述符改變字體樣式讨惩,而不需要獲取并設(shè)置當(dāng)前字體大小:
修改字體描述符信息
// 用描述符修改字體
// 1.獲得 UIFontTextStyleBody 風(fēng)格的字體描述符信息氏身。
UIFontDescriptor *bodyFontDesciptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
// 2.覆蓋字體特征巍棱。
UIFontDescriptor *boldBodyFontDescriptor = [bodyFontDesciptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
// 3.設(shè)置與字體描述符匹配的字體。
// 如果 fontSize 大于0.0蛋欣,則它在 fontDescriptor 中優(yōu)先于UIFontDescriptorSizeAttribute航徙。
self.boldBodyTextLabel.font = [UIFont fontWithDescriptor:boldBodyFontDescriptor size:0.0];
UIFontDescriptorSymbolicTraits 部分選項(xiàng)
UIFontDescriptorTraitItalic = 1u << 0,
UIFontDescriptorTraitBold = 1u << 1,
UIFontDescriptorTraitExpanded = 1u << 5, // expanded and condensed traits are mutually exclusive
UIFontDescriptorTraitCondensed = 1u << 6,
UIFontDescriptorTraitMonoSpace = 1u << 10, // Use fixed-pitch glyphs if available. May have multiple glyph advances (most CJK glyphs may contain two spaces)
UIFontDescriptorTraitVertical = 1u << 11, // Use vertical glyph variants and metrics
UIFontDescriptorTraitUIOptimized = 1u << 12, // Synthesize appropriate attributes for UI rendering such as control titles if necessary
UIFontDescriptorTraitTightLeading = 1u << 15, // Use tighter leading values
UIFontDescriptorTraitLooseLeading = 1u << 16, // Use looser leading values
通過傳入字典的方式創(chuàng)建字體描述符
// 創(chuàng)建一個(gè)字體描述符
UIFontDescriptor *scriptFontDescriptor = [UIFontDescriptor
fontDescriptorWithFontAttributes:@{
UIFontDescriptorFamilyAttribute: @"Zapfino",
UIFontDescriptorSizeAttribute: @15.0
}];
self.scriptTextLabel.font = [UIFont fontWithDescriptor:scriptFontDescriptor size:0.0];
其他可以設(shè)置的 Attributes 屬性:
UIKIT_EXTERN NSString *const UIFontDescriptorFamilyAttribute NS_AVAILABLE_IOS(7_0);
UIKIT_EXTERN NSString *const UIFontDescriptorNameAttribute NS_AVAILABLE_IOS(7_0);
UIKIT_EXTERN NSString *const UIFontDescriptorFaceAttribute NS_AVAILABLE_IOS(7_0);
UIKIT_EXTERN NSString *const UIFontDescriptorSizeAttribute NS_AVAILABLE_IOS(7_0);
UIKIT_EXTERN NSString *const UIFontDescriptorVisibleNameAttribute NS_AVAILABLE_IOS(7_0);
字體描述符效果:
The End.