ios - 使用 pangesturerecognizer 创建边界以阻止对象进入状态栏下方?

标签 ios iphone uiview uipangesturerecognizer

我正在使用 pangesturerecognizer 在屏幕上移动对象。

如何为对象创建一个边界,使其不超过屏幕顶部的某个点? 我正在考虑使用此 imageView.frame.origin.y > 0 但不确定如何将其添加到此代码中。 状态栏显然覆盖了屏幕顶部的 44 像素,我可能想这样做以在屏幕底部创建 44 像素的边界。

我正在使用这段代码来这样做:

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer
{
    CGPoint translation = [recognizer translationInView:self.view];

        recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                             recognizer.view.center.y + translation.y);


        [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];

}

@SomeGuy 好的,我尝试使用:

recognizer.view.center = CGPointMake(MIN(recognizer.view.superview.frame.size.width - recognizer.view.frame.size.width / 2, MAX(-recognizer.view.frame.size.width / 2, recognizer.view.center.x + translation.x)),
                                             MIN(recognizer.view.superview.frame.size.height - recognizer.view.frame.size.height / 2, MAX(-recognizer.view.frame.size.height / 2, recognizer.view.center.y + translation.y)));

但我无法弄清楚让它停止低于标准的逻辑。我确实通过这样做让它停止了。

编辑 此代码阻止它进入顶部栏下方,但我不确定如何创建边框或阻止它进入下方。

if (recognizer.view.center.y < 44) {


        recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x ,
                                             44 + translation.y  );
    }
    else
    {
        recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x ,
                                             recognizer.view.center.y + translation.y  );
    }

最佳答案

很简单,看看这张图:

enter image description here

为了防止您的 View 超出父 View ,您必须确保您的 View 中心永远不会在红色区域中获得值。为此,您可以使用这样的代码:

float minX = recognizer.view.frame.size.width /2;
float maxX = recognizer.view.superview.frame.size.width - minX;
float minY = recognizer.view.frame.size.height /2;
float maxY = recognizer.view.superview.frame.size.height - minY;
recognizer.view.center = CGPointMake(MIN(MAX(minX,recognizer.view.center.x + translation.x),maxX),MIN(MAX(minY,recognizer.view.center.y + translation.y),maxY));

关于ios - 使用 pangesturerecognizer 创建边界以阻止对象进入状态栏下方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21323734/

相关文章:

ios - 从 iPhone 到通用应用程序问题

ios - UITableView Header Override (UIView) 滚动行为异常

iPhone - viewDidLoad/viewDidAppear 中的 UIView 动画问题

ios - 使用 deque 带有标识符的可重用单元格获取 UIView 时,UIFooterView 不显示

ios - subview 的 UIStackView 不滚动

ios - anyobject 在 SWIFT 中没有成员命名的 objectforkey

ios - 博览会:没有为具有捆绑标识符的应用程序配置凭据

javascript - 我可以在 Mobile Safari 上用 user-css 覆盖 CSS 吗?

ios - 应用程序进入后台后每 n 分钟获取一次用户位置

ios - 我可以将文件的绝对路径保存在数据库中吗?