LTMLabel 1.0.4

LTMLabel 1.0.4

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布最新发布2015年10月

Sebastian Schilbe Pod 维护。



LTMLabel 1.0.4

  • LOTUM GmbH

一个能够绘制属性字符串并添加外轮廓、内阴影和渐变的标签。支持所有属性字符串属性,如 NSTextAttachments、NSParagraphStyles 等。

使用方法

鼓励您设置标签的 attributedString 属性。但也有一些方便的设置器为 UILabel 的默认属性,如 texttextColortextAlignmentfont

LTMLabel* label = [[LTMLabel alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
label.attributedString = [[NSAttributedString alloc] initWithString:@"Test text to draw"];

添加轮廓

添加单条轮廓

label.strokeColor = [UIColor blackColor];
label.strokeWidth = 4;

添加多条轮廓

label.strokeColors = @[[UIColor whiteColor], [UIColor blackColor]];
label.strokeWidths = @[@3, @6];

注意,轮廓宽度是整体宽度,不是增加的。因此,白色轮廓的宽度为 3,黑色轮廓的宽度为 6,但其中的 3 将被白色轮廓覆盖。

添加内阴影

要添加单个内阴影,您可将一个 NSShadow 对象设置为 innerShadow 属性

NSShadow* shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor whiteColor];
shadow.shadowOffset = CGSizeMake(0, 2);
shadow.shadowBlurRadius = 0;
label.innerShadow = shadow;

要添加多个内阴影,将多个阴影对象添加到 innerShadows 数组中。

内阴影混合模式

您可以使用 innerShadowBlendModeinnerShadowBlendModes 属性来更改内阴影混合模式。

label.innerShadowBlendMode = kCGBlendModeDarken;
label.innerShadowBlendModes = @[@(kCGBlendModeDarken), @(kCGBlendModeOverlay)];

添加渐变

您可以设置渐变的起始点和结束点以及不同的颜色。默认是从上到下的线性渐变

label.gradientStartColor = [UIColor yellowColor];
label.gradientEndColor = [UIColor orangeColor];

或设置多种颜色

label.gradientColors = @[[UIColor yellowColor], [UIColor orangeColor], [UIColor redColor]];

要更改起始点或结束点,设置 gradientStartPointgradientEndPoint。这些值在 0-1 的范围内。要从左到右设置渐变,请执行以下操作:

label.gradientStartPoint = CGPointMake(0, 0.5);
label.gradientEndPoint = CGPointMake(1, 0.5);

字体缩放

通过将 minimumScaleFactor 属性设置为小于 1 的值,您可以在标签文本不适应其框架时实现字体缩放。

框架调整大小

如果您想要您的标签根据其内容文本长度在高度或宽度上增长,请设置 maxSize 属性。这定义了标签可以增长的最大尺寸。在设置属性字符串时,会计算新的标签尺寸,这样您可以立即访问它的新尺寸,并在新的标签尺寸中进行进一步的定位。

要创建一个在高度上增长并缩小其文本的标签

LTMLabel* growAndScaleLabel = [[LTMLabel alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];
growAndScaleLabel.minimumScaleFactor = 0.75;
growAndScaleLabel.maxSize = CGSizeMake(CGRectGetWidth(growAndScaleLabel.bounds), 150);

致谢

原作来源及灵感来自

联系方式