iOS 边学边记 CATextLayer 详解、使用

本文介绍了CATextLayer作为UILabel替代品的优势,详细讲解了CATextLayer的属性和使用方法,包括字体、颜色、自动换行等,并探讨了如何处理富文本和行间距。同时,文章提供了一个使用CATextLayer的自定义UILabel子类LayerLabel的示例,展示了其高性能和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习《小码哥底层原理笔记:性能优化》中 “尽量使用轻量级的对象,比如用不到事件处理的地方,可以考虑使用CALayer取代UIView” 所以就学习了一下UIlabel的替代品 CATextLayer。

CATextLayer

Core Animation提供了的CALayer的子类,它以图层的形式包含了UILabel几乎所有的绘制特性,并且额外提供了一些新的特性。同样,CATextLayer也要比UILabel渲染得快得多。很少有人知道在iOS 6及之前的版本,UILabel其实是通过WebKit来实现绘制的,这样就造成了当有很多文字的时候就会有极大的性能压力。而CATextLayer使用了Core text,并且渲染得非常快。

先介绍一下CATextLayer相关的一些属性:

string
id类型, No Animatable(不支持动画)。要显示的文本,类型可以使NSString或者NSAttributedString,默认值为nil。
font
CFTypeRef类型, No Animatable。使用的字体,只有当string类型为NSString时才有效。默认Helvetica字体。CFTypeRef 只是一个占位符,font支持的类型有NSString、CTFontRef、CGFontRef,其中NSString 必须是支持的字体名称。

// 设置textLayer的字体为Bradley Hand
textLayer.font = (__bridge CFTypeRef _Nullable)(@"Bradley Hand");

fontSize
CGFloat类型, Animatable。字体大小,只有当string类型为NSString时才有效。默认36.0。
foregroundColor
CGColorRef类型, Animatable。文本颜色,默认不透明白色。动画效果仅支持OS X 10.6以上版本,不支持IOS。
wrapped(isWrapped)
BOOL类型, No Animatable。自动换行。
truncationMode
NSString *, No Animatable。当字符串显示不全的时候的裁剪方式。可选以下值:

NSString * const kCATruncationNone;    // 不剪裁,默认
NSString * const kCATruncationStart;   // 剪裁开始部分
NSString * const kCATruncationEnd;     // 剪裁结束部分
NSString * const kCATruncationMiddle;  // 剪裁中间部分

alignmentMode
NSString *, No Animatable。字符串对齐方式。

NSString * const kCAAlignmentNatural;   // 自然对齐,默认
NSString * const kCAAlignmentLeft;      // 左对齐
NSString * const kCAAlignmentRight;     // 右对齐
NSString * const kCAAlignmentCenter;    // 居中
NSString * const kCAAlignmentJustified; // 两端对齐

让我们来尝试用CATextLayer来显示一些文字。

@interface ViewController
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一了百-了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值