This is a better performance than UILabel
and can be used like a standard UI component.
Also, Easier to use than UILabel
.
Since UIView
is inherited instead of UILabel
, there is little wasteful processing.
It uses the function of TextKit to draw characters.
However, please note that content layout is not done automatically.
If want to automatically fix the height of the content, set usesIntrinsicContentSize
to true
.
Even if set it to true, the width of the content depends on the content frame. Even if specify an ambiguous width in Interface Builder, the width does not automatically fit.
Left tab is customizable label. The center tab AttributedLabel So fast. Right tab is UILabel So slow. Fast more than 10 times from 5 times.
- use the UIlabel
- use the AttributedLabel
- Swift 4.0
- iOS 7.0 or later
- tvOS 9.0 or later
Add the following to your Podfile
:
pod "AttributedLabel"
Add the following to your Cartfile
:
github "KyoheiG3/AttributedLabel"
Just add everything in the AttributedLabel.swift
file to your project.
var numberOfLines: Int
- Same as
numberOfLines
ofUILabel
. - Default is
0
.
var contentAlignment: AttributedLabel.ContentAlignment
- Alignment of content.
- Default is
left
.
@IBInspectable var padding: CGFloat
lineFragmentPadding
ofNSTextContainer
.- default is
0
.
var font: UIFont
- Text font.
- Default is system font 17 plain.
var lineBreakMode: NSLineBreakMode
- Same as
lineBreakMode
ofUILabel
. - Default is
ByTruncatingTail
.
@IBInspectable var textColor: UIColor?
- Default is nil (text draws black).
var paragraphStyle: NSParagraphStyle?
- Default is nil.
var shadow: NSShadow?
- Default is nil.
var attributedText: NSAttributedString?
- Default is nil.
@IBInspectable var text: String?
- Default is nil.
var usesIntrinsicContentSize: Bool
- If need to use intrinsicContentSize set true.
- Must specify width of Label yourself because this change only height automatically.
- Should call invalidateIntrinsicContentSize when intrinsicContentSize is cached. When text was changed for example.
- Default is
false
.
override func sizeThatFits(size: CGSize) -> CGSize
- Same as
sizeThatFits
ofUILabel
.
override func sizeToFit()
- Fit like
UILabel
. - The width of the content depends on the content frame.
Follow me ๐
Under the MIT license. See LICENSE file for details.