BetterLabel 0.5.1

BetterLabel 0.5.1

Jakub Olejník 维护。



BetterLabel

Travis CI build status BetterLabel Carthage Twitter

BetterLabel 简化了设置普通的样式属性,这些属性通常应由 NSAttributedString 来处理。

动机

在 iOS 上,设置某些 UILabel 属性非常不方便,因为它们不能直接在 UILabel 上设置 - 因此我们需要使用 NSAttributedString。让我们看一个例子。

想象一下,你需要创建一个具有自定义 字体文本颜色对齐字母间距间距)和自定义 行高 的标签。那么你应该创建一个 NSAttributedString 并将其设置为标签。

let text = "Some text"
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.minimumLineHeight = 15
paragraphStyle.maximumLineHeight = 15
paragraphStyle.alignment = .center
let textAttr = NSAttributedString(string: text, attributes: [
    .font: UIFont.systemFont(ofSize: 10),
    .foregroundColor: UIColor.blue,
    .kern: 1.2,
    .paragraphStyle: paragraphStyle
])
someLabel.attributedText = textAttr

通常,你只有一个标签应该保留所有的样式,你只想更改文本。好吧,使用 NSAttributedString 你需要将属性存储在某个地方,所有这些都变得非常复杂。😬

你想要的是设置标签的样式,然后稍后只需设置它应该显示的文本!这正是 BetterLabel 发挥作用的地方。

只需定义样式

betterLabel.font = UIFont.systemFont(ofSize: 10)
betterLabel.textColor = .blue
betterLabel.kern = 1.2
betterLabel.lineHeight = 15
betterLabel.textAlignment = .center

然后,只要你想,就可以设置你想要的文本!

betterLabel.text = "Some text"

简单吗?😎

想象一下,你需要在标签内部添加一些填充...你可能认为将标签嵌入到某个容器视图中或子类化标签。但是,使用 BetterLabel(比 UILabel 更好😎)并不需要这样做。只需设置内边距即可!

betterLabel.contentInset = UIEdgeInsets(top: 15, left: 5, bottom: 10, right: 12)

这很棒,对吧?😃

属性化标签

好的,BetterLabel 本身提供了对从 NSAttributedString 中最常见的属性的单键,但对于某些情况,可能不够。这就是为什么还需要 BetterAttributedLabel。您只需设置 attributes 属性,稍后设置文本即可。

betterAttributedLabel.attributes = [
    .font: .systemFont(ofSize: 10),
    .foregroundColor: UIColor.red
]
betterAttributedLabel.text = "That's how it's done with BetterAttributedLabel 😎"

应该就这样了🙂

UIButton 扩展

为了使 BetterLabel 更加出色,您可以使用 BetterLabelUIButton 设置属性化标题。🎉

let button = UIButton(type: .system)
button.setBetterLabel(betterLabel, for: .normal)

什么不是好的使用案例

如果您需要以不同样式显示一个字符串,这不是 BetterLabel 的目的,您应该使用常见的 UILabel。原因是我认为将 StringNSAttributedString 结合成单一的标签组件有些令人困惑。