FittableFontLabel 3.0.0

FittableFontLabel 3.0.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2018年9月
SPM支持SPM

Tom Baranes维护。



  • Tom Baranes

FittableFontLabel

Travis Language Platform CocoaPods Carthage compatible

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: 绘制时使用的最大字体大小。默认值为 100
  • minFontScale: 确定绘制时使用的最小字体大小的缩放因子。默认值为 0.1
  • rectSize: 文本必须适合的大小。默认值是标签边界
func fontSizeThatFits(
        text string: String, 
        maxFontSize: CGFloat = 100, 
        minFontScale: CGFloat = 0.1,
        rectSize: CGSize? = nil) -> CGFloat

返回可以使 text 参数适合标签框架的字体大小。

  • text: 需要适合标签的文本
  • maxFontSize: 可以返回的最大字体大小。默认值是 100
  • minFontScale: 确定可以返回的最小字体大小的缩放因子。默认值是 0.1
  • rectSize: 文本必须适合的大小。默认值是标签边界

FittableFontLabel

一个 UILabel 子类,允许您自动化调整字体大小的过程。

@IBInspectable public var autoAdjustFontSize: Bool = true

如果设置为 true,则在 textframe 发生变化时将调整字体大小。

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