IOS 中CATextLayer绘制文本字符串

IOS 中CATextLayer绘制文本字符串

CATextLayer使用Core Text进行绘制,渲染速度比使用Web Kit的UILable快很多。而且UILable主要是管理内容,而CATextLayer则是绘制内容。

CATextLayer的绘制文本字符串的效果如下:

代码示例:

// 绘制文本的图层
CATextLayer *layerText = [[CATextLayer alloc] init];
// 背景颜色
layerText.backgroundColor = [UIColor orangeColor].CGColor;
// 渲染分辨率-重要,否则显示模糊
layerText.contentsScale = [UIScreen mainScreen].scale;
// 显示位置
layerText.bounds = CGRectMake(0.0, 0.0, 100.0, 50.0);
layerText.position = position;
// 添加到父图书
[self.view.layer addSublayer:layerText];
// 分行显示
layerText.wrapped = YES;
// 超长显示时,省略号位置
layerText.truncationMode = kCATruncationNone;
// 字体颜色
layerText.foregroundColor = [UIColor purpleColor].CGColor;
// 字体名称、大小
UIFont *font = [UIFont systemFontOfSize:15.0];
CFStringRef fontName = (__bridge CFStringRef)font.fontName;
CGFontRef fontRef =CGFontCreateWithFontName(fontName);
layerText.font = fontRef;
layerText.fontSize = font.pointSize;
CGFontRelease(fontRef);
// 字体对方方式
layerText.alignmentMode = kCAAlignmentJustified;
// 字符显示
NSString *text = @"devZhang is iOSDeveloper.devZhang is iOSDeveloper.devZhang is iOSDeveloper.devZhang is iOSDeveloper."; 
// 方法1-简单显示
layerText.string = text;
// 方法2-富文本显示
// 文本段落样式
NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle alloc] init];
textStyle.lineBreakMode = NSLineBreakByWordWrapping; // 结尾部分的内容以……方式省略 ( "...wxyz" ,"abcd..." ,"ab...yz")
textStyle.alignment = NSTextAlignmentCenter; //(两端对齐的)文本对齐方式:(左,中,右,两端对齐,自然)
textStyle.lineSpacing = 5; // 字体的行间距
textStyle.firstLineHeadIndent = 5.0; // 首行缩进
textStyle.headIndent = 0.0; // 整体缩进(首行除外)
textStyle.tailIndent = 0.0; //
textStyle.minimumLineHeight = 20.0; // 最低行高
textStyle.maximumLineHeight = 20.0; // 最大行高
textStyle.paragraphSpacing = 15; // 段与段之间的间距
textStyle.paragraphSpacingBefore = 22.0f; // 段首行空白空间/* Distance between the bottom of the previous paragraph (or the end of its paragraphSpacing, if any) and the top of this paragraph. */
textStyle.baseWritingDirection = NSWritingDirectionLeftToRight; // 从左到右的书写方向(一共➡️三种)
textStyle.lineHeightMultiple = 15; /* Natural line height is multiplied by this factor (if positive) before being constrained by minimum and maximum line height. */
textStyle.hyphenationFactor = 1; //连字属性 在iOS,唯一支持的值分别为0和1
// 文本属性
NSMutableDictionary *textAttributes = [[NSMutableDictionary alloc] init];
// NSParagraphStyleAttributeName 段落样式
[textAttributes setValue:textStyle forKey:NSParagraphStyleAttributeName];
// NSFontAttributeName 字体名称和大小
[textAttributes setValue:[UIFont systemFontOfSize:12.0] forKey:NSFontAttributeName];
// NSForegroundColorAttributeNam 颜色
[textAttributes setValue:[UIColor greenColor] forKey:NSForegroundColorAttributeName];
NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:text];
[attributedText setAttributes:textAttributes range:NSMakeRange(0, 8)];
layerText.string = attributedText;

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 浅述iOS11 Xcode 9 按住command 单击 恢复到从前(直接跳转到定义)

    2017年9月20日,苹果如期推送 Xcode 9 和 iOS 11的更新. Xcode 9正式版与之前beta版本相差不大,编辑器有较大调整,试写代码,发现"跳转定义"跟以前不一样了,之前按住command +鼠标左键即可跳转定义. 如今不一样了,如图: 首先整块区域高亮,弹出菜单,Jump to Definition在菜单第一项,点击才会跳转,我想大部分人都不喜欢这种操作,多了一步,实在讨厌,如果你想找回之前的快速跳转定义的姿势,那么恭喜你看到了我: 鼠标用户: 对准你的对象,Co

  • IOS初始化控制器的实现方法总结

    IOS初始化控制器的实现方法总结 一.ViewControllViewController方法 #import "AppDelegate.h" #import "ViewController.h" @interface AppDelegate () @property(nonatomic,strong) ViewController *viewController; @end @implementation AppDelegate - (BOOL)applicati

  • IOS 中NSTimer定时器的使用

    IOS 中NSTimer定时器的使用 NSTimery 定时器,主要用于进行定时执行指定方法,常用场景如:获取验证码的按钮倒计时:图片轮播定时. 1 使用注意事项: 1.1 倒计时时间间隔(时间单位是秒) 1.2 指定的执行方法 1.3 实现指定执行方法的对象 1.4 是否重复执行 2 对象的内存管理及销毁 2.1 使用方法" invalidate "进行停止 2.2 将对象设置为" nil " 2.3 特别是在返回到其他视图控制器的时候,要在方法" -

  • IOS多线程编程NSThread的使用方法

    IOS多线程编程NSThread的使用方法 NSThread是多线程的一种,有两种方法创建子线程 (1)优点:NSThread 比GCD.NSOperation都轻量级 (2)缺点:需要自己管理线程的生命周期,线程同步.线程同步对数据的加锁会有一定的系统开销 第一种是隐藏创建,有以下几种方式: (1)多用于串行:- (id)performSelector:(SEL)aSelector withObject:(id)object; (2)后台执行,多用于并行:- (void)performSele

  • iOS中常见的视图和图片处理示例详解

    前言 众所周知在开发中不可避免的会遇到一些图片和视图的处理,我这里总结的这些只是我遇到的一些,以供下次使用查看.下面话不多说了,来一起看看详细的介绍吧. 图片的旋转 是UIImage的扩展类,直接使用UIImage的对象调用即可 UIImage #import <QuartzCore/QuartzCore.h> #import <Accelerate/Accelerate.h> @implementation UIImage (ImageRotate) -(UIImage *)im

  • IOS 开发之查看大图的实现代码

    IOS 开发之查看大图的实现代码 本项目是取自传智播客的教学项目,加入笔者的修改和润饰. 1. 项目名称:查看大图 2. 项目截图展示 3. 项目功能 左右滑动查看图片 支持缩放功能 点击中间按钮移动图片 4. 项目代码 #import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate> @property (strong, nonatomic) IBOutlet UIScrollVie

  • iOS 获取当前的ViewController的方法

    本文介绍了iOS 获取当前的ViewController,分享给大家.具体如下 通过简单的判断[UIViewController class],就认定它是想要的控制器是不对的: if ([nextResponder isKindOfClass:[UIViewController class]]) { result = nextResponder; }else { result = window.rootViewController; } 因为:isKindOfClass:确定一个对象是否是一个类

  • IOS 中CATextLayer绘制文本字符串

    IOS 中CATextLayer绘制文本字符串 CATextLayer使用Core Text进行绘制,渲染速度比使用Web Kit的UILable快很多.而且UILable主要是管理内容,而CATextLayer则是绘制内容. CATextLayer的绘制文本字符串的效果如下: 代码示例: // 绘制文本的图层 CATextLayer *layerText = [[CATextLayer alloc] init]; // 背景颜色 layerText.backgroundColor = [UIC

  • IOS 中CALayer绘制图片的实例详解

    IOS 中CALayer绘制图片的实例详解 CALayer渲染内容图层.与UIImageView相比,不具有事件响应功能,且UIImageView是管理内容. 注意事项:如何使用delegate对象执行代理方法进行绘制,切记需要将delegate设置为nil,否则会导致异常crash. CALayer绘制图片与线条效果图: 代码示例: CGPoint position = CGPointMake(160.0, 200.0); CGRect bounds = CGRectMake(0.0, 0.0

  • iOS中使用MD5加密字符串

    1,新建NSString的分类,记得添加加密所需的头文件#import <CommonCrypto/CommonDigest.h> , NSString+MD5.h: #import <Foundation/Foundation.h> #import <CommonCrypto/CommonDigest.h> @interface NSString (MD5) + (NSString *)md5To32bit:(NSString *)str; @end 2,编写加密方法

  • IOS 中UITextField和UITextView中字符串为空和空格的解决办法

    IOS 中UITextField和UITextView中字符串为空和空格的解决办法 在用UITextField,UITextView声明的属性写一些页面的时候,经常会出现这样的小bug,就是给空值或空格也能进行传值或存储,这里给一些解决的小方法: eg: 这里声明了一个属性,就以此为例来说 @property (nonatomic, strong) UITextField *titlefield; 为空时: if(_titlefield.text == nil){ //执行一些警告操作 } if

  • PHP函数实现从一个文本字符串中提取关键字的方法

    本文实例讲述了PHP函数实现从一个文本字符串中提取关键字的方法.分享给大家供大家参考.具体分析如下: 这是一个函数定位接收一个字符串作为参数(连同其他配置可选参数),并且定位该字符串中的所有关键字(出现最多的词),返回一个数组或一个字符串由逗号分隔的关键字.功能正常工作,但我正在改进,因此,感兴趣的朋友可以提出改进意见. /** * Finds all of the keywords (words that appear most) on param $str * and return them

  • iOS 截取字符串中两个指定字符串中间的字符串方法

    例如,要截取一个字符串中,两个指定字符串中间的字符串,OC截取方法如下: // 要截取 "> 和 </ 之间的汉字内容: @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSString *string = @"<a href=\"http\">这是要截取的内容</a>"; NSRange startRange = [st

  • iOS中textField限制字符串长度、字符数的方法

    前言 最近在开发的时候遇到一个问题,就是需要限制TextField中输入的字符串的长度,但是不是直接根据长度限制,而是根据字符数限制,一个汉字为两个字节,数字字母为一个字符.超过字符限制则不允许继续输入并弹出toast提示. 这个问题有三个关键点:判断字符串是否超出长度,超出长度不可输入,判断字符串的字符数. 下面话不多说了,来一起看看详细的介绍吧 方法如下: 1.判断字符串是否超出长度 [self.txfUsername addTarget:self action:@selector(text

  • 利用Python实现翻译HTML中的文本字符串

    相信大家都用过浏览器的翻译网页功能,例如对于下图这个英文网页: 一键翻译成中文以后是这样的: 你可能会觉得这个功能很简单,不就是字符串替换吗?那你可以试一试把下面这个HTML片段中的<p>标签下面的英文翻译成中文.其它标签中的不要改动: <div>  <p>if you want to parse date and time, your could use <em>datetime</em>, by use this library, you c

  • iOS中的UITableView的重用机制与加载优化详解

    UITableView可以说是UIKit中最重要的一个组件,用来展示数据列表,还可以灵活使用进行页面的布局.UITableView的使用遵循MVC模式,数据模型(NSObject).视图(UIView)和控制器(UITableViewController)分离.UITableView继承自UIScrollView,可上下滑动,可以作为跟视图也可以作为子视图组件. reuseIdentifier顾名思义是一个复用标识符,是一个自定义的独一无二的字符串,用来唯一地标记某种重复样式的可复用UITabl

  • IOS中使用UIWebView 加载网页、文件、 html的方法

    UIWebView 是用来加载加载网页数据的一个框.UIWebView可以用来加载pdf word doc 等等文件 生成webview 有两种方法: 1.通过storyboard 拖拽 2.通过alloc init 来初始化 创建webview,下列文本中 _webView.dataDetectorTypes = UIDataDetectorTypeAll; 是识别webview中的类型,例如 当webview中有电话号码,点击号码就能直接打电话 - (UIWebView *)webView

随机推荐