首先,声明几个属性
@property(nonatomic,strong)UIBezierPath * beizer;
@property(nonatomic,assign)CGPoint startPoint;
@property(nonatomic,assign)CGPoint movePoint;
@property(nonatomic,strong)CAShapeLayer * shapelayer;
然后注册屏幕上的拖拽事件,并初始化贝塞尔曲线和CAShapeLayer
- (void)viewDidLoad { [super viewDidLoad]; UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panTouch:)]; [self.view addGestureRecognizer:pan]; self.beizer = [UIBezierPath bezierPath]; [self initCAShaper]; } -(void)initCAShaper { self.shapelayer = [CAShapeLayer new]; self.shapelayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); self.shapelayer.fillColor = nil; self.shapelayer.lineCap = kCALineCapRound; self.shapelayer.strokeColor = [UIColor cyanColor].CGColor; self.shapelayer.lineWidth =2; [self.view.layer addSublayer:self.shapelayer]; }
紧接着处理拖拽事件
-(void)panTouch:(UIPanGestureRecognizer *)pan { _startPoint = [pan locationInView:self.view]; if(pan.state == UIGestureRecognizerStateBegan) { [self.beizer moveToPoint:_startPoint]; } if(pan.state == UIGestureRecognizerStateChanged) { _movePoint = [pan locationInView:self.view]; [_beizer addLineToPoint:_movePoint]; self.shapelayer.path = _beizer.CGPath; } }
大功告成。如图