测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最后发布 | 2017年1月 |
由 Jonathan Hersh 和 Samuel Giddins 维护。
iOS 7 的 UIFontDescriptor
很棒。动态文本也能响应用户在 Settings.app 中指定的首选文本大小。
不过,+[UIFont preferredFontForTextStyle:]
只能在系统字体 Helvetica Neue (iOS 8) 或 San Francisco (iOS 9) 上使用。如果您有自定义字体并且想尊重用户的文本大小偏好怎么办呢?
SSDynamicText 是一组简单的 UILabel
、UIButton
、UITextField
和 UITextView
子类,灵感来源于 这个 SO 回答。
Xcode 7.0+ 和 iOS 7.0+ SDK。
SSDynamicText
提供了动态自动调整大小的标签、按钮、文本字段和文本视图,当用户更改她首选的文本大小时会做出响应。请查看完整的 示例。
响应用户首选文本大小的 UIKit 视图
SSDynamicLabel
SSDynamicLabel *myLabel = [SSDynamicLabel labelWithFont:@"Courier"
baseSize:16.0f];
myLabel.text = @"Auto-sizing text!";
// Already have a font descriptor?
UIFontDescriptor *aDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Courier"
size:16.0f];
SSDynamicLabel *otherLabel = [SSDynamicLabel labelWithFontDescriptor:aDescriptor];
SSDynamicButton
SSDynamicButton *myButton = [SSDynamicButton buttonWithFont:@"Courier"
baseSize:16.0f];
[myButton setText:@"Auto-sizing text!" forControlState:UIControlStateNormal];
SSDynamicTextField
SSDynamicTextField *myTextField = [SSDynamicTextField textFieldWithFont:@"Courier"
baseSize:16.0f];
myTextField.text = @"Auto-sizing text!";
SSDynamicTextView
SSDynamicTextView *myTextView = [SSDynamicTextView textViewWithFont:@"Courier"
baseSize:16.0f];
myTextView.text = @"Auto-sizing text!";
UIFont+SSTextSize
使用指定的字体名称和基本大小创建一个 UIFont
对象。返回的字体实际大小会根据用户当前的首选字体大小(在 Settings.app 中指定)进行调整。
UIFont *myFont = [UIFont dynamicFontWithName:@"Courier" baseSize:16.0f];
UIApplication+SSTextSize
此属性返回默认大小设置(大)和用户当前首选文本大小之间的数值增量。
您可能不需要直接使用它。
NSInteger textDelta = [[UIApplication sharedApplication] preferredFontSizeDelta];
NSAttributedString
支持SSDynamicText 支持 attrited text!将您的 NSAttributedString
分配给新的 dynamicAttributedText
属性。
UITextView
和 UITextField
有时会即使使用普通文本也在内部调用 -setAttributedText:
方法。为了最好地适应这种内部实现细节,我们已经添加了一个新的 dynamicAttribtuedText
属性,而不是直接重写 -setAttributedText:
方法。
@property (nonatomic, copy) NSAttributedString *dynamicAttributedText;