THLabel 1.4.10

THLabel 1.4.10

测试已测试
Lang语言 Obj-CObjective C
许可证 NOASSERTION
发布最后发布2020年1月

Tobias Hagemann维护。




THLabel 1.4.10

  • Tobias Hagemann

THLabel

CocoaPods Compatible Carthage Compatible Platform Twitter

THLabel 是 UILabel 的子类,它还允许阴影模糊、内部阴影、描边文本和填充渐变。

THLabel screenshot

要求

  • iOS 4.0 或更高版本(尽管 iOS 7.0 以下未经过测试)
  • ARC 启用

安装

在您的应用程序中使用 THLabel 的一种简单方法是使用 CocoaPods

  1. 在项目的 Podfile 文件中添加以下行:pod 'THLabel', '~> 1.4.0'
  2. 在 Podfile 文件夹目录下运行命令 pod install

手动安装

  1. CoreText.framework 添加到您的 Link Binary with Libraries 列表中。
  2. 将这些文件拖入您的项目中: THLabel.hTHLabel.m

IBDesignable / IBInspectable

存在一个ibdesignable分支,如果您对这个功能感兴趣。它已经被从master分支移除,因为IBDesignable和IBInspectable在使用use_frameworks!(在Podfile中)时会导致CocoaPods出现问题。

使用方法

您可以程序化创建THLabels,也可以通过将普通的UILabel拖入您的视图中,并在Interface Builder中将它的Custom Class设置为THLabel来创建它们。在Xcode 6中,您可以在Interface Builder中设置大多数属性,它会立即预览您的更改。

属性

间距

@property CGFloat letterSpacing;
@property CGFloat lineSpacing;

您可以通过改变letterSpacing属性来修改文本的字母间距(也称为kerning)。默认值为0.0。正值会分离字符,而负值会使其更接近。

通过改变lineSpacing属性来修改文本的行间距(也称为leading)。默认值为0.0。只有正值才会有效。

阴影模糊

@property CGFloat shadowBlur;

除了UILabel的shadowColorshadowOffset外,您还可以设置阴影模糊以柔化阴影。

内部阴影

@property CGFloat innerShadowBlur;
@property CGSize innerShadowOffset;
@property UIColor *innerShadowColor;

内部阴影具有与UILabel的阴影类似的属性,再次补充了阴影模糊。如果内部阴影和描边重叠,则将在描边下方显示。

描边文字

@property CGFloat strokeSize;
@property UIColor *strokeColor;
@property THLabelStrokePosition strokePosition;

您可以通过设置strokePosition属性来设置外边、居中或内部描边。默认值为THLabelStrokePositionOutside。其他选项是THLabelStrokePositionCenterTHLabelStrokePositionInside

填充渐变

@property UIColor *gradientStartColor;
@property UIColor *gradientEndColor;
@property NSArray *gradientColors;
@property CGPoint gradientStartPoint;
@property CGPoint gradientEndPoint;

渐变可以由多种颜色组成,这些颜色必须保存为保存在gradientColors数组中的UIColor对象。为了方便起见,gradientStartColorgradientEndColor将相应地填充数组。

渐变的起始点和结束点在0到1的范围内,其中(0, 0)是文本的左上角,(1, 1)是右下角。gradientStartPoint的默认值为(0.5, 0.2),gradientEndPoint的默认值为(0.5, 0.8)。

淡入淡出截断

@property THLabelFadeTruncatingMode fadeTruncatingMode;

您可以通过设置fadeTruncatingMode属性来淡入/淡出标签。默认值为THLabelFadeTruncatingModeNone。选项是THLabelFadeTruncatingModeTailTHLabelFadeTruncatingModeHeadTHLabelFadeTruncatingModeHeadAndTail

文本嵌入/填充

@property UIEdgeInsets textInsets;
@property BOOL automaticallyAdjustTextInsets;

描边和阴影效果不能绘制在标签视图的边界之外。您可能需要设置文本嵌入来稍微远离边缘,以便效果不会被剪裁。如果将automaticallyAdjustTextInsets设置为YES,则会自动执行此操作,这也是默认值。

备注

THLabel(与UILabel不同)尊重(vertical alignment)的contentMode属性,当涉及到水平对齐时,textAlignment仍然有更高的优先级。

然而,THLabel不尊重numberOfLines属性,因为Core Text不支持它。如果您想有多个行,可以将lineBreakMode设置为NSLineBreakByWordWrapping

THLabel的绘制速度比UILabel慢,所以请注意这一点。

致谢

原始源码和灵感来自

非常感谢Jason Miller展示他的核心文本实现示例代码!这激励我深入研究并从iOS 7中远离使用NSAttributedString进行绘制,这导致了许多问题。

许可

在zlib许可下分发。有关更多信息,请参阅LICENSE文件。

联系方式

Tobias Hagemann