SSDynamicText 1.1.1

SSDynamicText 1.1.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2017年1月

Jonathan HershSamuel Giddins 维护。



Circle CI codecov.io

iOS 7 的 UIFontDescriptor 很棒。动态文本也能响应用户在 Settings.app 中指定的首选文本大小。

不过,+[UIFont preferredFontForTextStyle:] 只能在系统字体 Helvetica Neue (iOS 8) 或 San Francisco (iOS 9) 上使用。如果您有自定义字体并且想尊重用户的文本大小偏好怎么办呢?

SSDynamicText 是一组简单的 UILabelUIButtonUITextFieldUITextView 子类,灵感来源于 这个 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 属性。

UITextViewUITextField 有时会即使使用普通文本也在内部调用 -setAttributedText: 方法。为了最好地适应这种内部实现细节,我们已经添加了一个新的 dynamicAttribtuedText 属性,而不是直接重写 -setAttributedText: 方法。

@property (nonatomic, copy) NSAttributedString *dynamicAttributedText;

感谢!

SSDynamicText@jhersh 制作 -- (电子邮箱 | @jhersh)