UIBezierPath跟CAShapeLayer结合起来的用法

首先CAShapeLayer继承于CALayer,这样它就能够在视图上进行画图,描绘什么的。UIBezierPath这个就是路径,两者结合起来就是把路径描绘到视图中。UIBezierPath的初始化方法有以下几种:

+ (instancetype)bezierPath;

+ (instancetype)bezierPathWithRect:(CGRect)rect;//画矩形正方形之类的图形

+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;//画圆形

+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; // rounds all corners with the same horizontal and vertical radius

+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;//可以设置某个角的圆角

+ (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;//画弧

+ (instancetype)bezierPathWithCGPath:(CGPathRef)CGPath;



UIBezierPath添加描点的方法如下:(画曲线)

- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2;

- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;

其中endPoint: 终点。controlPoint: 控制点

用两个方法前必须先设置moveToPoint;

ps,如果要设置控制点事圆滑的曲线还要多设置一个控制点,比如类似于声波的曲线。

上代码:




解释下代码的意思。

CAShapeLayer可以跟动画一起使用,也就是CABasicAnimation;

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];关键在这里设置KeyPath;

注意:CAAnimationGroup *groupAnimation = [CAAnimationGroup animation];

            groupAnimation.animations = @[animationStart, animationEnd];

也就是说可以多个动画组合一起使用,也可以单独使用,看具体的要求吧。

最下面的代码类似下图的效果:


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容