SEBLabel 1.0.1

SEBLabel 1.0.1

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

Sebastian Schilbe Pod 维护。



SEBLabel 1.0.1

  • 作者:
  • Sebastian Schilbe

一个可以绘制属性字符串并添加外边框、内阴影和渐变的标签。支持所有属性字符串属性 - 如 NSTextAttachments、NSParagraphStyles 等。

使用方法

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

SEBLabel* label = [[SEBLabel 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 属性。这定义了标签允许增长的最大尺寸。在设置属性字符串时,将计算新的标签大小,因此您可以立即访问它的新尺寸,并在新的标签尺寸中执行进一步的位置调整。

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

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

致谢

原始源码和灵感来自

联系方式