在iOS中使用手指简单画线

来源:互联网 发布:我在百度云申请了域名 编辑:程序博客网 时间:2024/04/28 11:37

转自:http://blog.csdn.net/jasonblog/article/details/8024014


这个画线功能主要是为了辅助在iOS中支持手势锁屏的功能,哪位知道有现成的GestureLock项目的,求分享。

[cpp] view plaincopy
  1. @interface ViewController ()  
  2.   
  3. @property (nonatomic, strong) UIImageView *imageView;  
  4.   
  5. @property (nonatomic, assign) CGPoint lineStartPoint;  
  6. @property (nonatomic, assign) CGPoint lineEndPoint;  
  7.   
  8. @end  

要画线,需要有画板imageView,还有线的起始点、终点。

通过Cocoa Touch支持的交互特性,我们可以跟踪用户手指点击和移动:

[cpp] view plaincopy
  1. #pragma mark - Trace Touch Point  
  2.   
  3. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  
  4. {  
  5.     CGPoint touchPoint;  
  6.       
  7.     UITouch *touch = [touches anyObject];  
  8.     if (touch) {  
  9.         touchPoint = [touch locationInView:self.imageView];  
  10.         NSLog(@"touchesBegan : %f, %f\n", touchPoint.x, touchPoint.y);  
  11.           
  12.         self.lineStartPoint = touchPoint;  
  13.     }  
  14. }  
  15.   
  16. - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event  
  17. {  
  18.     CGPoint touchPoint;  
  19.       
  20.     UITouch *touch = [touches anyObject];  
  21.     if (touch) {  
  22.         touchPoint = [touch locationInView:self.imageView];  
  23.         NSLog(@"touchesMoved : %f, %f\n", touchPoint.x, touchPoint.y);  
  24.           
  25.         self.lineEndPoint = touchPoint;  
  26.         self.imageView.image = [self drawLineWithColor:[UIColor yellowColor] width:10.0f startPoint:self.lineStartPoint endPoint:self.lineEndPoint];  
  27.     }  
  28. }  
  29.   
  30. - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event  
  31. {  
  32.     ;  
  33. }  

最后就是基础的画线功能:

[cpp] view plaincopy
  1. #pragma mark - Draw Line  
  2.   
  3. - (UIImage *)drawLineWithColor:(UIColor *)color width:(CGFloat)width startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint  
  4. {  
  5.     UIImage *image = nil;  
  6.       
  7.     UIGraphicsBeginImageContext(self.imageView.frame.size);  
  8.       
  9.     CGContextRef context = UIGraphicsGetCurrentContext();  
  10.       
  11.     CGContextSetLineWidth(context, width);  
  12.     CGContextSetStrokeColorWithColor(context, [color CGColor]);  
  13.       
  14.     CGContextMoveToPoint(context, startPoint.x, startPoint.y);  
  15.     CGContextAddLineToPoint(context, endPoint.x, endPoint.y);  
  16.       
  17.     CGContextStrokePath(context);  
  18.       
  19.     image = UIGraphicsGetImageFromCurrentImageContext();  
  20.       
  21.     UIGraphicsEndImageContext();  
  22.       
  23.     return image;  
  24. }  

这样,就可以根据手指移动来绘制线条了。

这个功能可以做一些趣味App,或者我的目的:手势锁屏和解锁。

如下是简单效果图:


0 0
原创粉丝点击