AttributedLabel
UILabel
性能更高。
比Appetize的示例
概述
它比UILabel
性能更好,可以像标准UI组件一样使用。而且比UILabel
更易于使用。
由于继承自UIView
而不是UILabel
,因此几乎没有浪费的处理。它使用TextKit的功能绘制字符。
请注意,内容布局不是自动完成的。如果要自动固定内容的高度,请将usesIntrinsicContentSize
设置为true
。
自定义非常简单。
左侧标签页是可以自定义的标签。中间的标签页为AttributedLabel,响应速度极快。右侧标签页为UILabel,响应速度较慢。速度是原来的10倍以上,比5倍还要快。
- 使用UIlabel
- 使用AttributedLabel
需求
- Swift 5.0
- iOS 7.0及以上
- tvOS 9.0及以上
如何安装AttributedLabel
iOS 8+, tvOS
CocoaPods
将以下内容添加到您的 Podfile
pod "AttributedLabel"
Carthage
将以下内容添加到您的 Cartfile
github "KyoheiG3/AttributedLabel"
iOS 7
只需将AttributedLabel.swift
文件中的所有内容添加到您的项目中。
使用方法
变量
var numberOfLines: Int
- 与
UILabel
中的numberOfLines
相同。 - 默认为
0
。
var contentAlignment: AttributedLabel.ContentAlignment
- 内容的对齐方式。
- 默认为
left
。
@IBInspectable var padding: CGFloat
NSTextContainer
中lineFragmentPadding
的值。- 默认为
0
。
var font: UIFont
- 文本字体。
- 默认为系统字体17号平实字体。
var lineBreakMode: NSLineBreakMode
- 与
UILabel
中的lineBreakMode
相同。 - 默认为
ByTruncatingTail
。
@IBInspectable var textColor: UIColor?
- 默认为nil(文本以黑色绘制)。
var paragraphStyle: NSParagraphStyle?
- 默认为nil。
var shadow: NSShadow?
- 默认为nil。
var attributedText: NSAttributedString?
- 默认为nil。
@IBInspectable var text: String?
- 默认为nil。
var usesIntrinsicContentSize: Bool
- 如果需要使用intrinsicContentSize,则设置为true。
- 当intrinsicContentSize被缓存时,应调用invalidateIntrinsicContentSize。例如,当文本更改时。
- 默认为
false
。
var preferredMaxLayoutWidth: CGFloat
- 支持基于约束的布局(自动布局)。
- 如果非零,则在确定多行标签的intrinsicContentSize时使用。
函数
override func sizeThatFits(size: CGSize) -> CGSize
- 与
UILabel
中的sizeThatFits
相同。
override func sizeToFit()
- 类似
UILabel
的适配。
作者
Kyohei Ito
关注我
许可协议
遵循MIT许可协议。有关详细信息,请参阅LICENSE文件。