1. 程式人生 > >iOS---實現在螢幕上實時繪圖的簡單效果---CAShaperLayer和UIBezierPath的簡單運用

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)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;
    }
}

大功告成。如圖