字体描述符和符号特征

时间:2016-02-04 11:05:55

标签: objective-c uikit nsdictionary textkit

UIFontDescriptor *bodyFontDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
UIFontDescriptor *italicBoldDescriptor = [bodyFontDescriptor fontDescriptorByAddingAttributes:@{UIFontDescriptorTraitsAttribute : @{ UIFontSymbolicTrait: @(UIFontDescriptorTraitItalic | UIFontDescriptorTraitBold)}}];
UIFont *comboFont = [UIFont fontWithDescriptor:italicBoldDescriptor size:0.0];
[self.body.textStorage addAttribute:NSFontAttributeName value:comboFont range:self.body.selectedRange];

我的目标是在文本视图中加粗/斜体选定的文本。做了一些研究后,这就是我所拥有的,它的工作原理!但是,我真的不明白代码,特别是第二行。如果有人能够准确解释这段代码的作用,我将非常感激。另外,我不理解第二行中发生的字典语法。 '|'的语法是什么字符?我以前从未见过。非常感谢你的时间。

2 个答案:

答案 0 :(得分:0)

UIFontDescriptorTraitsAttribute,一个完全描述字体特征的NSDictionary实例实例。默认值由字体提供。

UIFontDescriptorSymbolicTraits象征性地描述了字体的风格方面。

您可以查看iOS Developer library

答案 1 :(得分:0)

“ |”运算符是C位或,它将两个标志值组合为一个数字。

Apple bold的文档显示为UIFontDescriptorTraitBold = 1u << 1 并将italic设置为UIFontDescriptorTraitItalic = 1u << 0

因此,OR子句将二进制值0b00000010和0b00000001合并为一个标志0b00000011。