首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

老司机带你走进Core Animation 之CAShapeLayer和CATextLayer

kCAFillRuleEvenOdd; [self.view.layer addSublayer:layer]; 可以看到,事实上老司机叠加了两条路径,一个圆角矩形一个圆形,然而这还并不够,因为layer还要知道自己填充判断规则...这个属性是用来判断某一点是否在填充区域内判断规则。 他有两个枚举值,kCAFillRuleNonZero和kCAFillRuleEvenOdd。...真不是,这次说他主要是想表达这个属性是默认支持隐式动画。 隐式动画就是不用显示声明,系统默认为我们实现动画。...这个属性指的是实线与虚线长度交替数组。注意奇数位为实线,偶数位为虚线,单位像素。系统会按照给定数组自动重复设置虚线。 lineDashPhase这个属性是告诉系统从多少开始计算这个距离。...这就是因为他隐式动画了。因为这时候我们不需要他动画是吧?知道原因就好办了,我们可以通过 CATransaction显式关闭他动画,恢复成0,再打开动画,是不是就行了?哈哈哈,就是这么简单。

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

绘图-CAShapeLayer、CABasicAnimation以及核心动画

CAShapeLayer有着几点很重要: 它依附于一个给定path,必须给与path,而且,即使path不完整也会自动首尾相接 strokeStart以及strokeEnd代表着在这个path中首部、...CAShapeLayer动画仅仅限于沿着边缘动画效果,它实现不了填充效果 我们可以使用CAShapeLayer与UIBezierPath可以实现不在viewdrawRect方法中就画出一些想要图形...在初始化时候可以不指定 Frame,其位置和形状由UIBezierPath决定。...#比如末端是矩形还是圆形,都是 UIBezierPath设置,而且fillColor 也是 UIBezierPath区域内颜色。...layer.strokeColor = [UIColor lightGrayColor].CGColor; __weak typeof(self) weakSelf = self; # 由代码可知,动画先后执行时间顺序是通过

2.7K30

使用CAShapeLayer绘图

之前讲过使用UIBezierPath在UIViewdrawRect中绘图, 今天我们讲下另外一种方式: CAShaperLayer 先说说使用CAShapeLayer优点: GPU执行, GPU执行...按照之前思路是创建一个UIView子类, 用UIBezierPath画一个外围不闭合圆弧, 在画中间点圆 代码量不是很多弹也不少, 那假如用CAShapeLayer实现时怎么样子呢?...redColor].CGColor; //设置划线颜色 circle.fillColor = [UIColor yellowColor].CGColor; //设置填充颜色...UIBezierPath生成一个path,然后取他CGPath来获取路径。...别不当回事,你错时候就知道咋回事了? 另外,如下图所示,整个圆形UIBezierPath其实是分为多个子路径绘制 strokeEnd 是轮廓终点属性,取值范围[0,1]。

1.1K10

iOS实践:通过核心动画完成过山车1. 思路和所用到内容2. 辅助元素创建(背景颜色、草坪、大地、小树、云彩)3. 雪山实现4. 轨道实现

现在感觉就是胸口一块大石头没有了,要去尽情嗨皮!!!! 之前在一个网站上看到了一个HTML5/SVG实现过山车动画,点这里看网页版。...觉得很棒,想想咱们iOS也完全可以实现,正好还可以全面回顾一下之前分享过关于iOS中间动画系列会使用到各个内容。...注释写还算比较详细啦,自我感觉。哈哈~ CAGradientLayer基础部分可以看看这个文章,第九篇:iOS动画系列之九:实现点赞动画及播放起伏指示器。...小树Layer,我们通过设置contents进行了图片填充。...画完了之后,使用图片进行填充就完成了90%工作。 为了让轨道看起来更好看一些,对轨道边缘进行镂空,内部填充色变成透明。 4.1 绘画步骤 1,先画最右边弧线,一个二次贝塞尔曲线。 ?

1.7K50

iOS动画系列之八:使用CAShapeLayer绘画动态流量图1. CAShapeLayer2. 实战:绘制一个镂空图层动画3. 使用CAShapeLayer绘画动态流量图

这篇文章通过使用CAShapeLayer和UIBezierPath来画出一个动态显示剩余流量动画。...1.2 基本属性 属性名 作用 path 图像绘制路径,path不支持隐式动画 fillColor 填充path颜色,或无填充。默认为不透明黑色。 fillRule 填充path规则。...实战:绘制一个镂空图层动画 做好后效果如下: Paste_Image.png fileprivate func hollowLayer(){ // 创建空心layer...), cornerRadius: 5) // 中间镂空圆形path let hollowPath = UIBezierPath.init(ovalIn: CGRect(x...hollowLayer.path = squarePath.cgPath hollowLayer.fillColor = UIColor.lightGray.cgColor // 设置路径填充模式为两个图形非交集

1.6K30

动画渐进效果与颜色渐变圆弧进度控件设计 原

动画渐进效果与颜色渐变圆弧进度控件设计      今天帮朋友写了一个小巧圆弧进度控件,控件十分简单,主要设计思路采用CAShapeLayer来创建控件圆弧形状,使用CAGradientLayer...来进行颜色渐变渲染,两者结合来创建出颜色渐变圆弧进度条控件,关于进度动画采用CoreAnimation动画处理。...控件进行了简洁封装,提供了面向使用接口,需要朋友可以自取,Demo地址如下: http://pan.baidu.com/s/1gfqDbtp。       ...控件中主要提供了,改变进度条渐变颜色,圆弧进度条宽度,带动画效果改变进度,改变进度百分比字体颜色等方法。效果是例如如下: ? 改变字体颜色 ? 改变进度 ? 改变进度条颜色 ?...:-M_PI_2 endAngle:M_PI_2*3 clockwise:YES];     _contentLayer.path = pathT.CGPath;     //默认填充颜色为白色

1.1K20

【iOS】基于Realm数据库记账软件--记账模块(二)

这里写图片描述 因此,我们动画要分两步: 提取颜色 做"覆盖"动画 4.1、提取颜色 在这里使用了一个框架CCColorCube,通过该框架,我们可以方便提取图标的颜色。...,因此直接取第一个元素即为我们所需要颜色 return colors.firstObject; } 4.2、覆盖动画 通过shapeLayer动画,一开始先添加宽为“1”线条,再设置动画,将线条...forKey:@"bgColorAnimation"]; } - (CAShapeLayer *)bgColorlayer { if(_bgColorlayer == nil) { UIBezierPath...*path = [UIBezierPath bezierPath]; [path moveToPoint:self.bounds.origin]; [path addLineToPoint...CAShapeLayer *layer = [CAShapeLayer layer]; //* 设置路径 */ layer.path = path.CGPath; //* 设置填充

1K30

iOS动画专题·UIView二维形变动画与CAAnimation核心动画(transform动画,基础,关键帧,组动画,路径动画,贝塞尔曲线)

1. iOS动画 总的来说,从涉及类形式来看,iOS动画有:基于UIView仿射形变动画,基于CAAnimation及其子类动画,基于CG动画。这篇文章着重总结前两种动画。 2....timingFunction:速度控制函数,控制动画运行节奏 delegate:动画代理 3.4 几个重要属性值 removedOnCompletion属性值 CAAnimation——动画填充模式...*path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 200, 200, 200)]; //指定path动画 UIBezierPath...组动画 6.1 组动画 上面单一动画情况在实际开发中实际比较少,更多时候是组合这些动画:创建不同类型动画对象,设置好它们参数,然后把这些动画对象存进数组,传进组动画对象animations属性中去...贝塞尔曲线 前面关键帧动画章节提到了贝塞尔曲线,这个曲线很有用,在iOS开发中有两种形式可用:CGMutablePathRef和UIBezierPath,均可以通过制定控制点数组形式唯一确定曲线,也可以通过矩形内切椭圆唯一确定曲线

3.2K21

他们主动布局(autolayout)环境图像编辑器

在大部分APP(尤其是社交类qq)常常会有更换头像场景:点击用户 载入头像,载入出系统图片,用户点击选中某张图片之后。能够对图片进行放缩和 拖动,已更改圆形裁剪框圈定图片部分。...留意上图动画,qq总是可以确保圆环全然被图片所覆盖,假设拖动 或者放缩使得图片以外黑色区域进入了圆环。图片会自己主动弹回刚好可以全然覆盖 状态。...还一条是圆 形虚线裁剪框; 2.使用奇偶原则对这两条封闭曲线进行色彩填充。使得方框和圆形框之间区域 填充(黑色。...//创建外围慷慨框UIBezierPath: UIBezierPath *bezierPathRect = [UIBezierPath bezierPathWithRect:rect]; /.../将圆形框path加入到慷慨框path上去,以便以下用奇偶填充法则进行区域填充: [bezierPathRect appendPath:pickingFieldPath]; //填充使用奇偶法则

78610

Swift-图像性能优化

->红高亮(也就是多个半透明层叠加,其中绿色代表比较好,红色则代表比较糟糕) 由于重绘原因,混合对GPU(Graphics Processing Unit->专门用来画图)性能会有影响,同时也是滑动或者动画帧率下降罪魁祸首之一..., size: rect.size) view.addSubview(imageView02) } 自定义创建图像方法 /// 将给定图像进行拉伸,并且返回新图像 /// ///...下面是方法最终代码: /// 将给定图像进行拉伸,并且返回新图像 /// /// - Parameters: /// - image: 原图 /// - size: 目标尺寸 /// -...// 背景填充(在裁切之前做填充) backColor.setFill() UIRectFill(rect) 但黑线原因暂时尚未查明。我之前思路是按照做圆形头像代码继续做。...背景被填充是黑色,在你图形以外范围内会被看见。

1.7K70
领券