Iphone 实现类似iFog的应用程序-显示内部UIImage
我正在尝试实现类似iFog的视图,这意味着当你可以像手指一样在屏幕上涂抹时,它将显示下面的内容 到目前为止,我所做的有两个问题: 当我第一次触摸屏幕时,它显示的不是圆圈中下方的内容,而是整个黑色矩形。屏幕上的下一次触摸按预期工作 当我快速滚动鼠标时——甚至没有那么快——实际上仍然在模拟器上测试——它似乎处理得不好,正如下图中圆圈之间的间隙所示。 也许是为了提高我的表现 随附图片,用于说明黑色矩形和间隙 我的代码:UIView子类 基本上,我先显示第一张图片,然后用手指在屏幕上移动,显示第二张图片Iphone 实现类似iFog的应用程序-显示内部UIImage,iphone,objective-c,ios4,uiview,core-graphics,Iphone,Objective C,Ios4,Uiview,Core Graphics,我正在尝试实现类似iFog的视图,这意味着当你可以像手指一样在屏幕上涂抹时,它将显示下面的内容 到目前为止,我所做的有两个问题: 当我第一次触摸屏幕时,它显示的不是圆圈中下方的内容,而是整个黑色矩形。屏幕上的下一次触摸按预期工作 当我快速滚动鼠标时——甚至没有那么快——实际上仍然在模拟器上测试——它似乎处理得不好,正如下图中圆圈之间的间隙所示。 也许是为了提高我的表现 随附图片,用于说明黑色矩形和间隙 我的代码:UIView子类 基本上,我先显示第一张图片,然后用手指在屏幕上移动,显示第二张图片
- (void)drawRect:(CGRect)rect
{
if (didStartTouching)
{
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextAddArc(contextRef, rect.origin.x+CIRCLE_RADIUS, rect.origin.y+CIRCLE_RADIUS, CIRCLE_RADIUS, 0, 360, 0);
CGContextClip(contextRef);
UIImage* img = [UIImage imageNamed:@"apple"];
[img drawInRect:CGRectMake(0, 0, img.size.width, img.size.height)];
}
else
{
UIImage* img = [UIImage imageNamed:@"default_pic_1"];
[img drawInRect:CGRectMake(0, 0, img.size.width, img.size.height)];
}
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self revealImageInSet:touches];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[self revealImageInSet:touches];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self revealImageInSet:touches];
}
-(void) revealImageInSet:(NSSet*)touches
{
didStartTouching = YES;
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
CGRect rect = CGRectMake(point.x-CIRCLE_RADIUS, point.y-CIRCLE_RADIUS, CIRCLE_RADIUS*2, CIRCLE_RADIUS*2);
[self setNeedsDisplayInRect:rect];
}
不要只在接触的地方显示图像,而应该显示从上一个接触点到当前接触点的图像。就像在最后一次触摸到当前触摸之间画一条线,然后显示该区域后面的内容。那会让事情变得更顺利
第一次触摸时不知道黑色矩形,抱歉。不要只在触摸的地方显示图像,而应该显示从上一个触摸点到当前触摸点的图像。就像在最后一次触摸到当前触摸之间画一条线,然后显示该区域后面的内容。那会让事情变得更顺利
第一次触摸时,我不知道黑色矩形,抱歉。但是如果我像你所说的那样,透露从最后一次触摸到当前触摸的所有内容,我不希望这样。我只想画出用户在屏幕上触摸的区域。你说在这片区域后面是什么意思?示例代码将非常棒。您的触摸顺序是连续触摸,对吗?一个触摸拖动的手势?我的意思是说,你应该显示每个触摸和拖动动作点之间的线条。因此,如果用户向下拖动,整个区域将全部显示,而不是以随机间隔的圆圈显示。基本上,我的意思是你应该跟踪你正在接收的触摸的路径,并显示路径后面的图像。现在你的代码只是揭示了接触点。将接触点连接在一起,形成您的路径。当然,当你的触摸和拖动手势结束时,重置路径跟踪。但是如果我要显示从最后一次触摸到当前触摸的所有内容,就像你说的那样画一条线,我不希望这样。我只想画出用户在屏幕上触摸的区域。你说在这片区域后面是什么意思?示例代码将非常棒。您的触摸顺序是连续触摸,对吗?一个触摸拖动的手势?我的意思是说,你应该显示每个触摸和拖动动作点之间的线条。因此,如果用户向下拖动,整个区域将全部显示,而不是以随机间隔的圆圈显示。基本上,我的意思是你应该跟踪你正在接收的触摸的路径,并显示路径后面的图像。现在你的代码只是揭示了接触点。将接触点连接在一起,形成您的路径。当然,在触摸和拖动手势结束时重置路径跟踪。