UIBezierPath,CAShaperLayer,

a、利用UIBezierPath在DrawRect:中绘制一个给定颜色的三角位图,代码如下:

- (void)drawRect:(CGRect)rect

{ // Drawing code

UIBezierPath *path = [UIBezierPath bezierPath];

[path moveToPoint:CGPointMake(rect.size.width/2, 0)];

[path addLineToPoint:CGPointMake(rect.size.width, rect.size.height)];

[path addCurveToPoint:CGPointMake(0, rect.size.height) controlPoint1:CGPointMake(rect.size.width/2, rect.size.height) controlPoint2:CGPointMake(rect.size.width/2, rect.size.height)];

[path closePath];

[[UIColor colorWithRed:25.0/255 green:141.0/225 blue:200.0/255 alpha:1] setStroke];

[[UIColor colorWithRed:25.0/255 green:141.0/225 blue:200.0/255 alpha:1] setFill];

[path stroke];

[path fill];

self.layer.shadowColor = [UIColor blackColor].CGColor;

self.layer.shadowRadius = 3;

self.layer.shadowOpacity = 0.4;

//    self.layer.shadowPath = [];

}

b、UIBezierPath和CAShapelayer的组合使用,其实是CAShaperLayer可以拥有一个自己的贝塞尔路径,绘制一左右两半颜色不同的图层视图,代码如下:

#import "BezierView.h"

@interface BezierView()

{

CAShapeLayer *_leftLayer;

UIBezierPath *_leftPath;

CAShapeLayer *_rightLayer;

UIBezierPath *_rightPath;

}

@end

@implementation BezierView

- (id)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

// Initialization code

_leftSpan = self.frame.size.width/4;

_leftLayer = [[CAShapeLayer alloc] init];

[self.layer addSublayer:_leftLayer];//将图层添加添加上去。

_leftLayer.fillColor = nil;

_leftLayer.frame = self.bounds;

_rightLayer = [[CAShapeLayer alloc] init];

[self.layer addSublayer:_rightLayer];//图层的添加

_rightLayer.fillColor = nil;

_rightLayer.frame = self.bounds;

self.backgroundColor = [UIColor blueColor];

}

return self;

}

-(void)setLeftOne

{

_leftPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, _leftSpan, self.frame.size.height)];

_leftLayer.path = _leftPath.CGPath;

}

-(void)setRightOne

{

_rightPath = [UIBezierPath bezierPathWithRect:CGRectMake(_leftSpan, 0, self.frame.size.width-_leftSpan, self.frame.size.height)];

_rightLayer.path = _rightPath.CGPath;

}

-(void)setRightColor:(UIColor *)rightColor

{

_rightLayer.fillColor = rightColor.CGColor;

[self setRightOne];

}

-(void)setLeftColor:(UIColor *)leftColor

{

_leftLayer.fillColor = leftColor.CGColor;

[self setLeftOne];

}

-(void)setLeftSpan:(CGFloat)leftSpan

{

_leftSpan = leftSpan;

[self setLeftOne];

[self setRightOne];

}

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect

{

// Drawing code

}

*/

@end

UIBezierPath,CAShaperLayer,

时间: 2024-10-24 15:35:37

UIBezierPath,CAShaperLayer,的相关文章

iOS---实现在屏幕上实时绘图的简单效果---CAShaperLayer和UIBezierPath的简单运用

首先,声明几个属性 @property(nonatomic,strong)UIBezierPath * beizer; @property(nonatomic,assign)CGPoint startPoint; @property(nonatomic,assign)CGPoint movePoint; @property(nonatomic,strong)CAShapeLayer * shapelayer; 然后注册屏幕上的拖拽事件,并初始化贝塞尔曲线和CAShapeLayer - (void

CALayer与UIBezierPath

UIView继承于UIResponder CALayer继承于nsobject 创建UIView创建一个layer,通过UIView的layer属性可依访问它的图层.UIView具有事件处理功能,可以与用户交互,layer负责显示和动画任务. 要显示一个UIView,会自动调用起drawRect方法绘画所有内容,然后字啊将图层拷贝到屏幕上,完成UICView的显示. frame不能作动画  修改大小bounds  修改位子position CALayer不能直接使用UIColer.UIImage

IOS Animation-CAShapeLayer、UIBezierPath与Animation的结合

在阅读本文之前,对CAShapeLayer.UIBezierPath不熟悉的话,可以先阅读文章 贝塞尔曲线与Layer 如果对动画不熟悉的话,先阅读文章 动画基础.深入 Layer是绘图的画板,Bezier是画图的画笔,Animation是画图的动作.现在我们可以通过下面例子更好的让它们更好地结合在一起. 1)画一个小屋子动画 我们首先通过定义CAShapeLayer画板,然后定义path来确定画图路径.最后使用动画.如下面代码 1 //让一个屋子的线画起来的动画效果 2 func addCAS

UIBezierPath 贝塞尔曲线

1. UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(30, 30, 100, 100) cornerRadius:0]; CAShapeLayer * layer = [CAShapeLayer layer];    layer.path = path.CGPath;    layer.fillColor = [[UIColor blackColor]CGColor]; layer.strokeC

使用贝赛尔路径(UIBezierPath)创建画板

在iOS开发中,创建图形,经常会使用贝塞尔路径,用于描绘一些比较复杂的图形. 使用贝塞尔路径,需要在view中的方法- (void)drawRect:(CGRect)rect中进行描绘. 1 - (void)drawRect:(CGRect)rect{ 2 UIBezierPath *path = [UIBezierPath bezierPath]; 3 // 起点 4 [path moveToPoint:CGPointMake(0, 0)]; 5 // 途经点 6 [path addLineT

通过UIBezierPath贝塞尔曲线画圆形、椭圆、矩形

/**创建椭圆形的贝塞尔曲线*/ UIBezierPath *_ovalPath=[UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 200, 100)]; /**创建矩形的贝塞尔曲线*/ UIBezierPath *_rectPath=[UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 200, 100)]; /**创建圆形的贝塞尔曲线*/ UIBezierPath *_circlePa

UIBezierPath和CGContext类中的方法

 UIBezierPath和CGContext类中的方法 CGContextSetLineWidth(ctr, 10); // 即描写边线又填充 CGContextDrawPath(ctr, kCGPathFillStroke); void CGContextSetLineWidth(CGContextRef c, CGFloat width); // 设置边线的宽度 void CGContextAddLineToPoint(CGContextRef c, CGFloat x, CGFloat

iOS学习:CAShapeLayer与UIBezierPath动画

CAShapeLayer与UIBezierPath动画: CAShapeLayer与UIBezierPath的动画,就离不开 CABasicAnimation:也将会使用到 strokeEnd.strokeStart.lineWidth 三个属性: 先做一条贝塞尔曲线: UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:CGPointMake(40, 80)]; [path addCurveToPoint:CGPo

iOS开发 贝塞尔曲线UIBezierPath(2)

使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 . 1:UIBezierPath: UIBezierPath是在 UIKit 中的一个类,继承于NSObject,可以创建基于矢量的路径.此类是Core Graphics框架关于path的一个OC封装.使用此类可以定义常见的圆形.多边形等形状 .我们使用直线.弧(arc)来创建复杂的曲线形状.每一个直线段或者曲线段的结束的地方是下一个的开始的地方.每一个连接的直线或者曲线段的集