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]; }
相关文章推荐
- 浙大PAT 1063
- Liteide go: cannot find GOROOT directory
- 高并发、大流量、大存储
- Android时钟控件
- iOS 四种延时的方法
- 项目七-简单的四则运算
- XML解析与创建之——DOM
- Android开发之APN网络切换
- Least Common Multiple
- Servlet仿CSDN动态验证码的生成-带数字和字母
- 集训队专题(7)1005 kebab
- 会议纪要一:从经理身上学到的东西
- ExcelHelper
- hdu 3887 Counting Offspring dfs 树 树状数组
- 如何让VMware低版本运行VMware高版本创建的虚拟机
- What is the reason that a likelihood function is not a pdf?
- GCD之阻塞死锁问题以及多个图片下载优化
- hdu1576(同余模定理&&扩展欧几里得)
- jQuery中用来让元素显示和隐藏的函数
- 文本挖掘分类算法--BP神经网络的一个具体的案例