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 文件。