ios - 如何将手势限制在 UIImageView 的范围内?

标签 ios objective-c uiimageview uigesturerecognizer uipangesturerecognizer

Shalini named tag moving on imageview

我想限制黑色图像 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;  
        }
    }

如有任何帮助,我们将不胜感激。

最佳答案

- (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;
}

这是代码。如果黑色 View 是女孩图片 View 的 subview ,它应该可以工作。

关于ios - 如何将手势限制在 UIImageView 的范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19631451/

相关文章:

ios - 方向改变后缩放 UIImageView

swift - 不正确的 UITableViewCell 高度 UIImageView

objective-c - 使图像移动更多 "fluidly"

ios - 如何检查 UILabel 的当前字体大小?

ios - 为 objective-c 麦克风检测添加动画

iphone - iPhone 上的色彩平衡

iphone - 将 UIView/UIWindow 中的特定触摸事件传递给下一个响应者(sendEvent :/hitTest: doesn't work )

iOS 游戏工具包 : Sending floats over the wire

objective-c - iOS 如何让 iPhone 罗盘航向以动画方式绕圈移动?

iphone - UDP sendto() 没有可用的缓冲区空间