vnt*_*udy 8 line direction swipe ios
我正在创建一个应用程序,当我在屏幕上滑动手指时,那时我正在使用代码绘制线条.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(),3.0);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 0.5, 0.6, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), startPoint.x, startPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), endPoint.x, endPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
}
Run Code Online (Sandbox Code Playgroud)
我也在使用代码同时在该行移动箭头....
-(void)moveBallConstantly
{
[UIView animateWithDuration:0.01f animations: ^{
[appDel.ballImageView setCenter:CGPointMake(appDel.ballImageView.center.x + (x/increamentFraction), appDel.ballImageView.center.y + (y/increamentFraction))];
}];
}
Run Code Online (Sandbox Code Playgroud)
它只是功能的一小部分.我能够不断地移动箭头,但为了更好地顺利移动箭头,我用计时器重复调用这个函数.01.
因为我正在同时处理这两个处理,所以它有时会产生问题.有时箭头移动方法会延迟,有时候Line drwing方法会延迟.
我会废弃计时器并将其移入touchesMoved。
我的解决方案允许您在 UIImageView 画布上绘图,并且在您绘图时有一个白色框跟随您的手指。将其放入任何 UIView 中进行尝试:
// These should probably be @properties
static CGPoint lastPoint;
static CGPoint currentPoint;
static UIView *box;
static UIImageView *canvas;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
currentPoint = [touch locationInView:self];
lastPoint = [touch locationInView:self];
// Create the canvas the first time. Should probably do this elsewhere
// but done here for paste-ability
if (canvas == nil)
{
canvas = [[UIImageView alloc] initWithFrame:self.frame];
canvas.backgroundColor = [UIColor redColor];
[self addSubview:canvas];
}
// Create the box that follows the finger. Should probably do this elsewhere
// but done here for paste-ability
if (box == nil)
{
box = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
box.backgroundColor = [UIColor whiteColor];
[self addSubview:box];
}
// Ensure we can see it and move it right away
box.alpha = 1.0f;
box.center = CGPointMake(currentPoint.x, currentPoint.y - 50);
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
currentPoint = [touch locationInView:self];
// Set up everything for drawing
UIGraphicsBeginImageContext(canvas.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[canvas.image drawInRect:CGRectMake(0, 0, canvas.image.size.width, canvas.image.size.height)];
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineWidth(context, 1);
CGContextSetStrokeColorWithColor (context, [UIColor blueColor].CGColor);
// Draw the path
CGContextBeginPath(context);
CGContextMoveToPoint(context, lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y);
CGContextStrokePath(context);
canvas.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Animate the box very quickly to the new location
[UIView animateWithDuration:0.1f
delay:0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
box.center = CGPointMake(box.center.x + (currentPoint.x - lastPoint.x),
box.center.y + (currentPoint.y - lastPoint.y));
}
completion:nil];
// Remember our last touch
lastPoint = currentPoint;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
// Finish it off by fading out the box
[UIView animateWithDuration:0.4f animations:^{
box.alpha = 0.0f;
}];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1616 次 |
| 最近记录: |