【问题标题】:How to restrict gesture to within the bounds of UIImageView?如何将手势限制在 UIImageView 的范围内?
【发布时间】:2013-10-28 09:43:35
【问题描述】:

我想限制黑色图像 UIView 在girlimageview 范围内移动。我不应该移动到girlimageview 之外。

我的girlimageview是带框的静态图片(5,0,310,320)

我正在使用UIGestureRecognizer 来移动 imageview 上的黑色图像。

我尝试使用以下代码使用UIPanGestureRecognizer 进行限制,但无法限制它。

UIPanGestureRecognizer *panTagGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[panTagGesture setDelegate:self];
[blackanimateview addGestureRecognizer:panTagGesture];


 -(void) handlePan:(UIGestureRecognizer*)panGes{

        CGPoint point = [panGes locationInView:girlimageview];

        if (point.x < girlimageview.bounds.size.width) {

            CGRect newframe = CGRectMake(point.x, point.y, blackanimateview.frame.size.width, blackanimateview.frame.size.height);

            blackanimateview.frame = newframe;

        }
        if (point.y < girlimageview.bounds.size.height-160) {

            CGRect newframe = CGRectMake(point.x, point.y, blackanimateview.frame.size.width, blackanimateview.frame.size.height);

            blackanimateview.frame = newframe;  
        }
    }

任何帮助将不胜感激。

【问题讨论】:

  • 如果您想将手势限制为girlImageView,那么您应该将[blackanimateview addGestureRecognizer:panTagGesture];更改为[girlImageView addGestureRecognizer:panTagGesture];

标签: ios objective-c uiimageview uigesturerecognizer uipangesturerecognizer


【解决方案1】:
- (void)handlePan:(UIGestureRecognizer*)panGes {
CGPoint point = [panGes locationInView:girlimageview];
CGRect girlImageViewBounds = girlimageview.bounds;
CGRect blackAnimateViewFrame = blackanimateview.frame;
CGFloat newX = MIN(point.x, girlImageViewBounds.size.width - blackAnimateViewFrame.size.width);
newX = MAX(newX, 0.0f);
CGFloat newY = MIN(point.y, girlImageViewBounds.size.height - blackAnimateViewFrame.size.height);
newY = MAX(newY, 0.0f);
blackAnimateViewFrame.origin.x = newX;
blackAnimateViewFrame.origin.y = newY;
blackanimateview.frame = blackAnimateViewFrame;
}

这是代码。如果黑色视图是女孩图像视图的子视图,它应该可以工作。

【讨论】:

  • 非常感谢..@Roman Temchenko。它非常有效..+1 可以节省我的时间..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 2021-12-20
  • 2014-08-04
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多