利用CAShapeLayer在文字上画虚线(UILable举例)

2024-01-03 01:08

本文主要是介绍利用CAShapeLayer在文字上画虚线(UILable举例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天看到朋友有个需求,是要在lab的文字下画虚线,感觉很有意思就用CAShapeLayer研究了下,来一起看看吧。


老样子直奔主题上代码:

//
//  ViewController.m
//  DottedLineDemo
//
//  Created by a111 on 16/3/16.
//  Copyright © 2016年 司小文. All rights reserved.
//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.view.backgroundColor = [UIColor blackColor];[self makeDottedLine];// Do any additional setup after loading the view, typically from a nib.
}#pragma mark 制作虚线
- (void)makeDottedLine{//labNSString *str = @"司小文的博客:http://blog.csdn.net/siwen1990";float strFont = 14.;CGRect labRect = [str boundingRectWithSize:CGSizeMake(MAXFLOAT, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:strFont]} context:nil];UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake((self.view.frame.size.width-labRect.size.width)/2, 100, labRect.size.width,labRect.size.height)];lab.textColor = [UIColor whiteColor];lab.text = str;lab.font = [UIFont systemFontOfSize:strFont];[self.view addSubview:lab];//layerCAShapeLayer *shapeLayer = [CAShapeLayer layer];[shapeLayer setBounds:lab.bounds];[shapeLayer setPosition:lab.center];[shapeLayer setFillColor:[[UIColor redColor] CGColor]];//设置虚线的颜色 - 颜色请必须设置[shapeLayer setStrokeColor:[[UIColor whiteColor] CGColor]];//设置虚线的高度[shapeLayer setLineWidth:1.0f];//设置类型[shapeLayer setLineJoin:kCALineJoinRound];/*10.f=每条虚线的长度3.f=每两条线的之间的间距*/[shapeLayer setLineDashPattern:[NSArray arrayWithObjects:[NSNumber numberWithInt:10.f],[NSNumber numberWithInt:3.f],nil]];// Setup the pathCGMutablePathRef path1 = CGPathCreateMutable();/*代表初始坐标的x,yx:写-2,是为了视觉上,虚线比文字稍长一点。y:要和下面的y一样。*/CGPathMoveToPoint(path1, NULL,-2, lab.frame.size.height);/*代表坐标的x,ylab.frame.size.width+2:我觉得他代表的意思可以理解为线的长度。lab.frame.size.height:要与上面的y大小一样,才能使平行的线,不然会画出斜线呦~*/CGPathAddLineToPoint(path1, NULL, lab.frame.size.width+2,lab.frame.size.height);//赋值给shapeLayer[shapeLayer setPath:path1];//清除CGPathRelease(path1);//可以把self改成任何你想要的UIView.[[self.view layer] addSublayer:shapeLayer];}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end


效果图:



注释写的很清楚但是demo还是要奉上的:

CAShapeLayer画虚线-司小文 (提取码:e684)



感谢观看,学以致用更感谢。



这篇关于利用CAShapeLayer在文字上画虚线(UILable举例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/564161

相关文章

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

Winfrom中解决图像、文字模糊的方法

1.添加清单 2.将清单中的下面内容取消注释

【生日视频制作】酒吧一群美女车展模特大屏幕视频改字AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程酒吧一群美女车展模特大屏幕视频改字AE模板修改文字特效广软件告生成神器素材祝福玩法AE模板工程 怎么如何做的【生日视频制作】酒吧一群美女车展模特大屏幕视频改字AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件 下载AE模板 把AE模板导入AE软件 修改图片或文字 渲染出视频

ORA-01861:文字与格式字符串不匹配

select t.*, t.rowid from log_jk_dtl t; insert into log_jk_dtl (rq,zy,kssj,jssj,memo)  values (to_date(sysdate,'yyyy-mm-dd'),'插入供应商', to_char(sysdate,'hh24:mi:ss'),to_char(sysdate,'hh24:mi:ss'),'备注'

【生日视频制作】劳斯莱斯库里南中控改名软件AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程豪车劳斯莱斯库里南中控改名软件AE模板修改文字特效广告生成神器素材祝福玩法AE模板工程 怎么如何做的【生日视频制作】劳斯莱斯库里南中控改名软件AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 下载AE模板 安装AE软件 把AE模板导入AE软件 修改图片或文字 渲染出视频

生产者消费者模型(能看懂文字就能明白系列)

系列文章目录 能看懂文字就能明白系列 C语言笔记传送门 Java笔记传送门 🌟 个人主页:古德猫宁- 🌈 信念如阳光,照亮前行的每一步 前言 本节目标: 理解什么是阻塞队列,阻塞队列与普通队列的区别理解什么是生产者消费者模型生产者消费者模型的主要作用 一、阻塞队列 阻塞独立是一个特殊的队列,它具有以下特点: 线程安全带有阻塞特性:即如果队列为空,这时继续出队列的话,

java把文字转MP3语音案例

一 工具下载: https://download.csdn.net/download/jinhuding/89723540 二代码 <dependency><groupId>com.hynnet</groupId><artifactId>jacob</artifactId><version>1.18</version></dependency> import com.jacob.acti

运用WPS快速整理中英混排的网页文字的方法

朋友从网上下载了一篇技术文档,发现文档中每一行的行末都有一个段落符号,而真正要分段的段首则有4个半角空格,还有许多空段。   想重新编排一下,由于文档比较长,手工操作肯定不行,我向他推荐用WPS文字的“智能格式整理”功能。在该文档处于打开状态时,用鼠标点开“工具”菜单下的“文字工具→智能格式整理”,几秒钟后,所有的段首空格全部消失,段与段之间的空段也全部消除,但每一行行末的段落标记却依然

leetcode:516 最长回文字序列 动态规划

516. 最长回文字序列 题目链接https://leetcode.cn/problems/longest-palindromic-subsequence/ 题目描述 给定一个字符串 s,找到 s 中最长的回文子序列。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "bbbab" 输出: 4解释: 一个可能的最长回文子序列是 "bbbb"。

CSS学习6--背景图片、颜色、位置、附着、简写、透明、缩放、多背景、凹凸文字、导航栏例子

CSS背景 一、背景颜色和图片二、背景位置三、背景附着四、背景简写五、背景透明六、背景缩放七、多背景八、凹凸文字九、导航栏例子 一、背景颜色和图片 background-color: pink; 背景颜色backgroundoimage: url(##.jpg); 背景图片background-repeat: 平铺 repeat-x横向平铺,repeat-y纵向平铺; 平铺不到