在这个上面画UIBezierPath曲线,然后add到任意的View上!灰常方便。本身也灰常方便。使用与UIBezierPath,类似,还能带动画!
绘制路径 - UIBezierPath 话个path 就好了
不多提了。看UIKit - UIBezierPath。只需要路径,属性什么不要设置,shapeLayer自己设置。其实差不多的。
设置 shapeLayer
// 创建一个shapeLayer
CAShapeLayer *layer = [CAShapeLayer layer];
layer.frame = self.view.bounds;
layer.path = path.CGPath; // 从贝塞尔曲线获取到形状
layer.lineWidth = 1.0f; // 线条宽度
layer.strokeColor = [UIColor redColor].CGColor; // 边缘线的颜色
layer.miterLimit = 2.;
layer.lineDashPhase = 10;// 未知?
layer.lineDashPattern = @[@3,@10];// 虚线
layer.fillColor = [UIColor greenColor].CGColor; // 闭环填充的颜色
layer.fillRule = kCAFillRuleNonZero;
/*
CA_EXTERN NSString *const kCAFillRuleNonZero
CA_EXTERN NSString *const kCAFillRuleEvenOdd
*/
layer.lineCap = kCALineCapSquare; // 边缘线的类型
/*
CA_EXTERN NSString *const kCALineCapButt
CA_EXTERN NSString *const kCALineCapRound
CA_EXTERN NSString *const kCALineCapSquare
*/
layer.lineJoin = kCALineJoinRound;
/*
CA_EXTERN NSString *const kCALineJoinMiter
CA_EXTERN NSString *const kCALineJoinRound
CA_EXTERN NSString *const kCALineJoinBevel
*/
// 结合 CABasicAnimation 可以变成 动画绘制
// 将layer添加进图层
[self.view.layer addSublayer:layer];
其他
@property CGFloat strokeStart;
@property CGFloat strokeEnd;
@property CGFloat lineDashPhase;
1
网友评论