iOS开发CoreAnimation解读之二——对CALayer的分析(二)

简介: iOS开发CoreAnimation解读之二——对CALayer的分析

四、CAShapeLayer


       CAShapeLayer是图形layer层,我们可以自定义这个层的形状。先来看其中我们可以使用的属性和方法:


@property(nullable) CGPathRef path;

path属性为CAShapeLayer设置一个边界路径,例如我们可以创建一个三角形的路径通过如下代码:


   CAShapeLayer * layer = [CAShapeLayer layer];

   layer.position=CGPointMake(0,0);

   CGMutablePathRef path = CGPathCreateMutable();

   CGPathMoveToPoint(path, 0, 100, 100);

   CGPathAddLineToPoint(path, 0, 300, 100);

   CGPathAddLineToPoint(path, 0, 200, 200);

   CGPathAddLineToPoint(path, 0, 100, 100);

   layer.path=path;

仅仅有路径,不能将我们想要的形状画出来,下面一些属性可以对图形的一些基础属性进行设置:


//设置图形的填充颜色

@property(nullable) CGColorRef fillColor;

/*

设置图形的填充规则 选项如下:

非零填充

NSString *const kCAFillRuleNonZero;

奇偶填充

NSString *const kCAFillRuleEvenOdd;

*/

@property(copy) NSString *fillRule;

//设置线条颜色

@property(nullable) CGColorRef strokeColor;

//设置线条的起点与终点 0-1之间

@property CGFloat strokeStart;

@property CGFloat strokeEnd;

//设置线条宽度

@property CGFloat lineWidth;

//设置两条线段相交时锐角斜面长度

@property CGFloat miterLimit;

/*

设置线条首尾的外观

可选参数如下

无形状

NSString *const kCALineCapButt;

圆形

NSString *const kCALineCapRound;

方形

NSString *const kCALineCapSquare;

*/

@property(copy) NSString *lineCap;

/*

设置线段的链接方式

棱角

NSString *const kCALineJoinMiter;

平滑

NSString *const kCALineJoinRound;

折线

NSString *const kCALineJoinBevel;

*/

@property(copy) NSString *lineJoin;

修改一下上面的代码,如下:


CAShapeLayer * layer = [CAShapeLayer layer];

   layer.position=CGPointMake(0,0);

   CGMutablePathRef path = CGPathCreateMutable();

   CGPathMoveToPoint(path, 0, 100, 100);

   CGPathAddLineToPoint(path, 0, 300, 100);

   CGPathAddLineToPoint(path, 0, 200, 200);

   CGPathAddLineToPoint(path, 0, 100, 100);

   layer.path=path;

   layer.fillColor= [UIColor redColor].CGColor;

   layer.fillRule = kCAFillRuleEvenOdd;

   layer.strokeColor = [UIColor blueColor].CGColor;

   layer.strokeStart =0;

   layer.strokeEnd =0.5;

   layer.lineWidth = 5;

   layer.miterLimit = 1;

   layer.lineJoin = kCALineJoinMiter;

   [self.view.layer addSublayer:layer];

效果如下:




除此之外,我们还可以设置边界的线条为虚线,通过下面两个属性:


   //设置线段的宽度为5px 间距为10px

   /*

   这个数组中还可以继续添加,会循环进行设置 例如 5 2 1 3 则第一条线段5px,间距2px,第二条线段1px 间距3px再开始第一条线段

   */

   layer.lineDashPattern = @[@05,@10];

   //设置从哪个位置开始

   layer.lineDashPhase =5;

如下:


image.png


五、CATextLayer


       CATextLayer可以进行文本的绘制,属性方法如下:


//渲染的文字字符串

@property(nullable, copy) id string;

//设置字体

@property(nullable) CFTypeRef font;

//设置字号

@property CGFloat fontSize;

//设置文字颜色

@property(nullable) CGColorRef foregroundColor;

//是否换行

@property(getter=isWrapped) BOOL wrapped;

/*

设置截断模式

NSString * const kCATruncationNone;

截断前部分

NSString * const kCATruncationStart;

截断后部分

NSString * const kCATruncationEnd;

截断中间

NSString * const kCATruncationMiddle;

*/

@property(copy) NSString *truncationMode;

/*

设置文字对齐模式

NSString * const kCAAlignmentNatural;

NSString * const kCAAlignmentLeft;

NSString * const kCAAlignmentRight;

NSString * const kCAAlignmentCenter;

NSString * const kCAAlignmentJustified;

*/

@property(copy) NSString *alignmentMode;

目录
相关文章
|
29天前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
19 1
|
1月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
84 3
|
2月前
|
Android开发 数据安全/隐私保护 iOS开发
安卓与iOS系统的发展趋势与比较分析
【2月更文挑战第6天】 在移动互联网时代,安卓和iOS系统作为两大主流移动操作系统,各自呈现出不同的发展趋势。本文将从技术角度出发,对安卓和iOS系统的发展方向、特点及未来趋势进行比较分析,以期为读者提供更深入的了解和思考。
35 4
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
122 2
|
3月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
39 0
|
6天前
|
API 定位技术 iOS开发
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
【4月更文挑战第18天】**Cocoa Touch** 是iOS和Mac OS X应用的核心框架,包含面向对象库、运行时系统和触摸优化工具。它提供Mac验证的开发模式,强调触控接口和性能,涵盖3D图形、音频、网络及设备访问API,如相机和GPS。是构建高效iOS应用的基础,对开发者至关重要。
9 0
|
21天前
|
开发工具 Swift iOS开发
利用SwiftUI构建动态用户界面:iOS开发新范式
【4月更文挑战第3天】 随着苹果不断推进其软件开发工具的边界,SwiftUI作为一种新兴的编程框架,已经逐渐成为iOS开发者的新宠。不同于传统的UIKit,SwiftUI通过声明式语法和强大的功能组合,为创建动态且响应式的用户界面提供了一种更加简洁高效的方式。本文将深入探讨如何利用SwiftUI技术构建具有高度自定义能力和响应性的用户界面,并展示其在现代iOS应用开发中的优势和潜力。
|
2月前
|
安全 搜索推荐 Android开发
Android 与 iOS 的比较分析
【2月更文挑战第5天】 Android 和 iOS 是目前市场上两种最流行的移动操作系统,它们都拥有自己的特点和优势。本文将会分别从操作系统设计、应用生态、安全性等方面对这两种操作系统进行比较和分析,希望能够帮助读者更好地选择适合自己的移动设备。
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
193 2
|
3月前
|
数据可视化 iOS开发
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
40 4