您的位置:首页 > 其它

OC笔记-贝塞尔曲线的应用

2016-02-28 14:17 183 查看
// 画矩形
- (void)drawJX {
UIBezierPath *path = [UIBezierPath bezierPathWithRect: CGRectMake(110, 100, 150, 100)];
CAShapeLayer *layer = [CAShapeLayer layer];
layer.path = path.CGPath;
layer.fillColor = [UIColor blackColor].CGColor; // storke空心, fill实心
[self.view.layer addSublayer: layer];
}

//  圆角图形
- (void)drawYJ {
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(110, 100, 150, 100) cornerRadius:50];
CAShapeLayer *layer = [CAShapeLayer layer];
layer.path = path.CGPath;
layer.fillColor = [UIColor clearColor].CGColor; // 填充色
layer.strokeColor = [UIColor blackColor].CGColor;   //  边框颜色
[self.view.layer  addSublayer: layer];
}

//  画圆
- (void)drawYuan {
CGFloat radius = 60.0f;
CGFloat startAngle = 0.0f;
CGFloat endAngle = M_PI * 2;
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:self.view.center radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];
CAShapeLayer *layer = [CAShapeLayer layer];
layer.path = path.CGPath;
layer.fillColor = [UIColor clearColor].CGColor;
layer.strokeColor = [UIColor blackColor].CGColor;

[self.view.layer addSublayer: layer];

}

//     画曲线
- (void)drawQX {
CGPoint startPoint = CGPointMake(50, 300); // 初始点
CGPoint endPoint = CGPointMake(300, 300);   //  结束点
CGPoint controlPoint = CGPointMake(175, 125); // 控制点

CALayer *layer1 = [CALayer layer];
layer1.frame = CGRectMake(startPoint.x, startPoint.y, 5, 5);
layer1.backgroundColor = [UIColor redColor].CGColor;

CALayer *layer2 = [CALayer layer];
layer2.frame = CGRectMake(endPoint.x, endPoint.y, 5, 5);
layer2.backgroundColor = [UIColor redColor].CGColor;

CALayer *layer3 = [CALayer layer];
layer3.frame = CGRectMake(controlPoint.x, controlPoint.y, 5, 5);
layer3.backgroundColor = [UIColor redColor].CGColor;

UIBezierPath *path = [UIBezierPath bezierPath];
CAShapeLayer *layer = [CAShapeLayer layer];

[path moveToPoint: startPoint];
[path addQuadCurveToPoint:endPoint controlPoint:controlPoint];

layer.path = path.CGPath;
layer.fillColor = [UIColor clearColor].CGColor;
layer.strokeColor = [UIColor blackColor].CGColor;
layer.strokeStart   = 0.5f;
layer.strokeEnd     = 0.5f;

//  动画
CABasicAnimation *startBA = [CABasicAnimation animationWithKeyPath:@"strokeStart"];
startBA.fromValue = @0.5;
[startBA setToValue: @0];
startBA.duration = 2;
[layer addAnimation:startBA forKey:@""];

CABasicAnimation *endBA = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
endBA.fromValue = @0.5;
[endBA setToValue: @1];
endBA.duration = 2;
[layer addAnimation:endBA forKey:@""];

[self.view.layer addSublayer: layer];
[self.view.layer addSublayer: layer1];
[self.view.layer addSublayer: layer2];
[self.view.layer addSublayer: layer3];

}

// 多控制点曲线
- (void)drawDQX {
CGPoint startPoint = CGPointMake(50, 300); // 初始点
CGPoint endPoint = CGPointMake(300, 300);   //  结束点
CGPoint controlPoint = CGPointMake(135, 125); // 控制点42.5
CGPoint controlPoint2 = CGPointMake(177.5, 425);

CAShapeLayer *layer = [CAShapeLayer layer];

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint: startPoint];
[path addCurveToPoint:endPoint controlPoint1:controlPoint controlPoint2:controlPoint2];

layer.path = path.CGPath;
layer.fillColor = [UIColor clearColor].CGColor;
layer.strokeColor = [UIColor blackColor].CGColor;

[self.view.layer addSublayer: layer];
}

// 单曲边矩形
- (void)drawJXD {
CGSize finalSize = CGSizeMake(CGRectGetWidth(self.view.frame), 400);
CGFloat layerHeight = finalSize.height * 0.2;

CAShapeLayer *layer = [CAShapeLayer layer];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint: CGPointMake(0, finalSize.height - layerHeight)];
[path addLineToPoint: CGPointMake(0, finalSize.height - 1)];
[path addLineToPoint: CGPointMake(finalSize.width, finalSize.height - 1)];
[path addLineToPoint:CGPointMake(finalSize.width, finalSize.height - layerHeight
9cee
)];
[path addQuadCurveToPoint:CGPointMake(0, finalSize.height - layerHeight) controlPoint:CGPointMake(finalSize.width / 2, (finalSize.height - layerHeight) - 40)];
layer.path = path.CGPath;
layer.fillColor = [UIColor blackColor].CGColor;
[self.view.layer addSublayer: layer];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: