NSAttributedString相对font-size自定义属性

时间:2013-11-12 18:17:00

标签: ios nsattributedstring textkit

在CSS中,您拥有font-size属性,可用于指定相对于文本其余部分的字体大小。

在iOS中实现自定义相对字体大小属性需要什么(仅需要iOS 7兼容性)?是否有任何第三方解决方案已经实现了这一点?

(我希望该解决方案对于支持属性文本的所有内容都很有用:UILabel,UITextView,... UIButton中的titleLabel等。)

1 个答案:

答案 0 :(得分:1)

假设您要为自己的自定义标题定义相对于用户首选正文字体大小的属性(即动态类型)。

UIFontDescriptor *bodyFontDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];

NSNumber *bodyFontSize = bodyFont.fontAttributes[UIFontDescriptorSizeAttribute];

float bodyFontSizeValue = [bodyFontSize floatValue];

UIFont *headerOneFont = [UIFont fontWithDescriptor:bodyFontDescriptor size:bodyFontSizeValue * 3.0f];

NSDictionary *headerOneAttributes = @{NSFontAttributeName : headerOneFont};

UIFont *headerTwoFont = [UIFont fontWithDescriptor:bodyFontDescriptor size:bodyFontSizeValue * 2.0f];

NSDictionary *headerTwoAttributes = @{NSFontAttributeName : headerTwoFont};

此代码基于Raywenderlich.com的“iOS 7 by Tutorials”第4章和第5章的代码。

属性词典可用于初始化属性字符串对象,而后者又可以在UILabels,UITextViews和UITextFields中显示。