可拖动图像ios的边界
Posted
技术标签:
【中文标题】可拖动图像ios的边界【英文标题】:Boundary for draggable image ios 【发布时间】:2012-06-18 15:08:27 【问题描述】:我正在尝试创建一个可拖动的图像,但我试图将其拖动到一个小方块内而不是全屏。有人可以告诉我哪里出错了吗?我已将到目前为止的代码放在下面:
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
UITouch *touch = [[event allTouches] anyObject];
if([touch view] == dot)
CGPoint location = [touch locationInView:self.view];
dot.center = location;
if (location.x >10)
location.x =10;
else if (location.x <10)
location.x = 10;
if (location.y >20)
location.y =20;
else if (location.y < 20)
location.y = 20;
【问题讨论】:
那么当你拖动时会发生什么? 我可以将它拖到整个屏幕上,而不是在我指定的范围内。然后可拖动的图像可以从屏幕上消失/在导航栏/标签栏下。我如何将其限制在一个小方块内? 【参考方案1】:您在对其进行更改之前分配location
。
首先将您的限制应用于location
,然后将其分配给dot
。
此外,您显示的限制会将您的位置锁定为 10,20,因为您不允许它超过 10 或小于 10。20 也是如此。
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
UITouch *touch = [[event allTouches] anyObject];
if([touch view] == dot)
CGPoint location = [touch locationInView:self.view];
location.x = MIN(MAX(location.x, 0),10);
location.y = MIN(MAX(location.y, 0),20);
dot.center = location;
【讨论】:
谢谢,这对我帮助很大。【参考方案2】:我最近实现了一个像这样的图像拖动功能。我使用 PAN Gesture 移动图像,生成两个 CGFloats “endPointX 和 endPointY”。在下面的 cmets“留在屏幕上检查”和“结束留在屏幕上检查”之间的代码中,我检查这些是否在屏幕上。如果不是,我会调整它们以防止图像移出屏幕。
我希望这会有所帮助。如果您想在整个屏幕的一小部分内移动图像,那么我会将图像添加到持有人子视图,然后检查持有人视图上面的 .bounds.size.width/height。
CGFloat endPointX = translatedPoint.x + (.35*[(UIPanGestureRecognizer*)sender
velocityInView:self.view].x);
CGFloat endPointY = translatedPoint.y + (.35*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y);
// Stay on the screen check
if(endPointX < 0)
endPointX = 0;
else if(endPointX > self.view.bounds.size.width)
endPointX = self.view.bounds.size.width;
if(endPointY < 0)
endPointY = 0;
else if(endPointY > self.view.bounds.size.height)
endPointY = self.view.bounds.size.height;
// End of the Stay on Screen check
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.35];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[[sender view] setCenter:CGPointMake(endPointX, endPointY)];
[UIView commitAnimations];
【讨论】:
感谢您的回复,但我不确定如何使用 PAN 手势识别器。以上是关于可拖动图像ios的边界的主要内容,如果未能解决你的问题,请参考以下文章