在iOS中使用手指简单画线

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

@interface ViewController ()

@property (nonatomic, strong) UIImageView *imageView;

@property (nonatomic, assign) CGPoint lineStartPoint;
@property (nonatomic, assign) CGPoint lineEndPoint;

@end

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

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

#pragma mark - Trace Touch Point

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGPoint touchPoint;
    
    UITouch *touch = [touches anyObject];
    if (touch) {
        touchPoint = [touch locationInView:self.imageView];
        NSLog(@"touchesBegan : %f, %f\n", touchPoint.x, touchPoint.y);
        
        self.lineStartPoint = touchPoint;
    }
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGPoint touchPoint;
    
    UITouch *touch = [touches anyObject];
    if (touch) {
        touchPoint = [touch locationInView:self.imageView];
        NSLog(@"touchesMoved : %f, %f\n", touchPoint.x, touchPoint.y);
        
        self.lineEndPoint = touchPoint;
        self.imageView.image = [self drawLineWithColor:[UIColor yellowColor] width:10.0f startPoint:self.lineStartPoint endPoint:self.lineEndPoint];
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    ;
}

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

#pragma mark - Draw Line

- (UIImage *)drawLineWithColor:(UIColor *)color width:(CGFloat)width startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint
{
    UIImage *image = nil;
    
    UIGraphicsBeginImageContext(self.imageView.frame.size);
    
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    CGContextSetLineWidth(context, width);
    CGContextSetStrokeColorWithColor(context, [color CGColor]);
    
    CGContextMoveToPoint(context, startPoint.x, startPoint.y);
    CGContextAddLineToPoint(context, endPoint.x, endPoint.y);
    
    CGContextStrokePath(context);
    
    image = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return image;
}

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

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

如下是简单效果图:



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值