我目前正在我的应用中使用UIPanGestureRecognizer对象移动UIImageView。目前,这个UIImageView在我的屏幕上非常漂亮地上下移动。但是,我现在要做的是将UIImageView的移动边界限制在我的UITableView所覆盖的区域内,该区域位于屏幕中间。我想将此移动限制在UITableView的上边框和下边框。这是我控制UIImageView移动的相关方法:
- (void)panGestureDetected:(UIPanGestureRecognizer *)recognizer {
_startLocation = [recognizer locationInView:_imageView];
NSLog(@"The point is: %d", _startLocation);
CGPoint newCenter = _imageView.center;
newCenter.y = [recognizer locationInView:[_imageView superview]].y;
//this is where I figure I need to include an if statement to perform a check to see if the location is within the desired region
_imageView.center = newCenter;
}
我意识到我需要在我的方法中包含一个“if”语句来检查我的UIImageView是否在我想要的区域内,但问题是我不知道如何检查这个。有人可以帮助我吗?
答案 0 :(得分:0)
您应该使用translationInView
方法(documentation)。
这将返回用户将图片移动到的CGPoint
位置。将图像视图的原始位置与平移进行比较。如果平移过大而图像视图将移动到所需区域之外,请不要移动它。
代码应该看起来像这样(我想你可以直接放弃):
CGPoint translation = [recognizer translationInView:_imageView.superview];
[recognizer setTranslation:CGPointMake(0, 0) inView:_imageView.superview];
CGPoint center = recognizer.view.center;
center.y += translation.y;
if (center.y < _table.frame.origin.y
|| center.y > _table.frame.size.height) {
return;
}
recognizer.view.center = center;
有关其他实施,请参阅this question。