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,如果要设置控制点事圆滑的曲线还要多设置一个控制点,比如类似于声波的曲线。

上代码:


UIBezierPath跟CAShapeLayer结合起来的用法_第1张图片
UIBezierPath跟CAShapeLayer结合起来的用法_第2张图片



解释下代码的意思。

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

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

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

            groupAnimation.animations = @[animationStart, animationEnd];

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

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


UIBezierPath跟CAShapeLayer结合起来的用法_第3张图片

你可能感兴趣的:(UIBezierPath跟CAShapeLayer结合起来的用法)