cashapelayer

CAShapeLayer cutout in UIView

百般思念 提交于 2021-01-28 09:51:59
问题 My goal is to create a pretty opaque background with a clear rounded rect inset let shape = CGRect(x: 0, y: 0, width: 200, height: 200) let maskLayer = CAShapeLayer() maskLayer.path = UIBezierPath(roundedRect: shape, cornerRadius: 16).cgPath maskLayer.fillColor = UIColor.clear.cgColor maskLayer.fillRule = kCAFillRuleEvenOdd let background = UIView() background.backgroundColor = UIColor.black.withAlphaComponent(0.8) view.addSubview(background) constrain(background) { $0.edges == $0.superview!

iOS动画详解(学习动画看这一篇就够了)

£可爱£侵袭症+ 提交于 2020-04-07 06:41:58
原文出处: wu大维 动效设计一直是iOS平台的优势,良好的动效设计可以很好地提升用户体验。而动画则是动效的基础支撑。本动画将从易到难逐步分析,从CABasicAnimation,UIBezierPath,CAShapeLayer三个方面完整的阐述iOS动画的实现。最终的效果如下: 例子来源与网络,不是我写的,我只是加上了详细的注释,方便大家理解(我只是代码的搬运工...)。这个例子是CABasicAnimation,UIBezierPath,CAShapeLayer的综合实现,如果能完全理解这个例子,相信其它的iOS动画也难不倒你了。 demo下载地址 CABasicAnimation 一、概念 这个部分你需要了解以下概念: CALayer、CAAnimation、CAAnimationGroup 1、CALayer CALayer是个与UIView很类似的概念,同样有backgroundColor、frame等相似的属性,我们可以将UIView看做一种特殊的CALayer。但实际上UIView是对CALayer封装,在CALayer的基础上再添加交互功能。UIView的显示必须依赖于CALayer。我们同样可以跟新建view一样新建一个layer,然后添加到某个已有的layer上,同样可以对layer调整大小、位置、透明度等。一般来说,layer可以有两种用途

CAShapeLayer绘图

Deadly 提交于 2020-03-26 00:18:08
之前讲过使用UIBezierPath在UIView的drawRect中绘图, 今天我们讲下另外一种方式: CAShaperLayer 先说说使用CAShapeLayer的优点: GPU执行, GPU执行 , GPU执行 比如我们要画这样一个形状, 按照之前的思路是创建一个UIView子类, 用UIBezierPath画一个外围的不闭合圆弧, 在画中间点圆 代码量不是很多弹也不少, 那假如用CAShapeLayer实现时怎么样子的呢? 我们先上代码: #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //定义一个CAShapeLayer CAShapeLayer *myShapeLayer = ({ //初始化一个实例对象 CAShapeLayer *circle = [CAShapeLayer layer]; circle.bounds = CGRectMake(0, 0, 100, 100); //设置大小 circle.position = self.view.center; //设置中心位置 circle.path = \ [UIBezierPath