gpt4 book ai didi

iPhone SDK 使用触摸从屏幕上删除 UIImageView?

转载 作者:技术小花猫 更新时间:2023-10-29 11:03:37 26 4
gpt4 key购买 nike

我正在寻找一种能够从屏幕上删除 UIImageView 的方法。当我说删除时,我不是指 [imageView removeFromSuperview];,我的意思是通过在屏幕上涂写手指来删除部分图像。无论你的手指在哪里,这就是被删除的图像部分。我只是找不到任何帮助。

我认为图像与 Quartz 有关系吗?如果是这样,那我真的不太擅长。 :(

我想最好的例子是彩票。一旦你刮开票的部分,它下面的区域就会显露出来。有人知道如何实现吗?

谢谢!

更新:

下面的代码就是这个技巧。谢谢!

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
lastTouch = [touch locationInView:canvasView];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
currentTouch = [touch locationInView:canvasView];

CGFloat brushSize = 35;
CGColorRef strokeColor = [UIColor whiteColor].CGColor;

UIGraphicsBeginImageContext(scratchView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[canvasView.image drawInRect:CGRectMake(0, 0, canvasView.frame.size.width, canvasView.frame.size.height)];
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineWidth(context, brushSize);
CGContextSetStrokeColorWithColor(context, strokeColor);
CGContextSetBlendMode(context, kCGBlendModeClear);
CGContextBeginPath(context);
CGContextMoveToPoint(context, lastTouch.x, lastTouch.y);
CGContextAddLineToPoint(context, currentTouch.x, currentTouch.y);
CGContextStrokePath(context);
canvasView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

lastTouch = [touch locationInView:canvasView];
}

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

}

最佳答案

你完全可以用 UIImageView 做到这一点,不需要自定义 Quartz 层。您熟悉 iOS 中的任何绘图形式吗?基本上,您只需要使用 touchesBegan:touchesMoved:touchesEnded 来跟踪当前和之前的触摸位置。

然后你需要在当前触摸位置和之前的触摸位置之间画一条“线”(在这种情况下会删除它下面的内容),使用如下所示的东西,它直接取 self 开发的一个实际应用程序,它做了一些事情相当相似:

UIGraphicsBeginImageContext(canvasView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[canvasView.image drawInRect:CGRectMake(0, 0, canvasView.frame.size.width, canvasView.frame.size.height)];
CGContextSetLineCap(context, lineCapType);
CGContextSetLineWidth(context, brushSize);
CGContextSetStrokeColorWithColor(context, strokeColor);
CGContextSetBlendMode(context, kCGBlendModeClear);
CGContextBeginPath(context);
CGContextMoveToPoint(context, lastTouch.x, lastTouch.y);
CGContextAddLineToPoint(context, currentTouch.x, currentTouch.y);
CGContextStrokePath(context);
canvasView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

在这段代码中,canvasView 是一个 UIImageView。有很多此类绘图的教程。对于你想要的,重要的是将混合模式设置为 kCGBlendModeClear。就是这一行:

CGContextSetBlendMode(context, kCGBlendModeClear);

关于iPhone SDK 使用触摸从屏幕上删除 UIImageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11480223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com