FittableFontLabel
UILabel可以按照以下方式缩小字体大小:
label.minimumScaleFactor = 0.3
label.adjustsFontSizeToFitWidth = true
label.numberOfLines = 1但它并不总是按预期工作
- 不适应标签高度
- 当最大字体大小很大时,顶部/底部边距过大
- 不够可定制
- ...
这就是为什么存在FittableFontLabel的原因
- 使文本适应标签大小:如果多行,则宽度和高度;如果单行,则宽度
- 支持一行或多行
- 支持属性文本(自定义行间距...)
- 无需使用默认标签字体大小即可自定义
maxFontSize - 符合自动布局
UILabel扩展,如果我们想使用UILabel- 在使用
UILabel的子类FittableFontLabel时,可以从xibs / storyboards中自定义 - ...
多行UILabel
带有属性文本(行间距)的多行UILabel
单行UILabel
用法
let aFittableFontLabel = FittableFontLabel(frame: CGRect(x: 0, y: 0, width: 300, height: 100))
aFittableFontLabel.autoFittableFont = true
aFittableFontLabel.lineBreakMode = .ByWordWrapping
aFittableFontLabel.numberOfLines = 0 // or 1...
aFittableFontLabel.text = "?"
// Change the text, it will always fit the label frame!有关高级用法,请参阅示例项目。
注意:为了使其正常工作,标签的lineBreakMode必须设置为NSLineBreakByWordWrapping。
安装
- 支持iOS 8.0及以上的版本
CocoaPods
将 pod FittableFontLabel 修改到您的 Podfile 文件中。
Carthage
将 github "tbaranes/FittableFontLabel" 添加到您的 Cartfile 文件 中。
Swift Package Manager
FittableFontLabel 在 SPM 上可用。只需将以下内容添加到您的 Package 文件中
import PackageDescription
let package = Package(
dependencies: [
.Package(url: "https://github.com/tbaranes/FittableFontLabel.git", majorVersion: 1)
]
)手动安装
只需将 Source/*.swift 文件拖入您的项目中。
UILabel 扩展
func fontSizeToFit(maxFontSize: CGFloat = 100,
minFontScale: CGFloat = 0.1,
rectSize: CGSize? = nil)调整字体大小以使当前文本与标签框架完美匹配。
maxFontSize: 绘制时使用的最大字体大小。默认值为 100minFontScale: 确定绘制时使用的最小字体大小的缩放因子。默认值为 0.1rectSize: 文本必须适合的大小。默认值是标签边界
func fontSizeThatFits(
text string: String,
maxFontSize: CGFloat = 100,
minFontScale: CGFloat = 0.1,
rectSize: CGSize? = nil) -> CGFloat返回可以使 text 参数适合标签框架的字体大小。
text: 需要适合标签的文本maxFontSize: 可以返回的最大字体大小。默认值是 100minFontScale: 确定可以返回的最小字体大小的缩放因子。默认值是 0.1rectSize: 文本必须适合的大小。默认值是标签边界
FittableFontLabel
一个 UILabel 子类,允许您自动化调整字体大小的过程。
@IBInspectable public var autoAdjustFontSize: Bool = true如果设置为 true,则在 text 或 frame 发生变化时将调整字体大小。
@IBInspectable public var maxFontSize = CGFloat.NaN绘图时使用的最大字体大小。默认值为当前字体大小。
@IBInspectable public var minFontScale = CGFloat.NaN决定绘图时使用的最小字体大小的缩放因子。默认值为 0.1。
@IBInspectable public var leftInset: CGFloat = 0
@IBInspectable public var rightInset: CGFloat = 0
@IBInspectable public var topInset: CGFloat = 0
@IBInspectable public var bottomInset: CGFloat = 0这四个属性允许您在标签中设置一个边距。这将改变字体必须适应的矩形。默认值是 0。
贡献
- 如果您发现了一个 bug,请打开一个 issue。
- 如果您有一个 功能请求,请打开一个 issue。
- 如果您想 贡献,提交一个 pull request。
许可证
FittableFontLabel 在 MIT 许可证下可用。更多信息请参阅 LICENSE 文件。


