gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:17:21 27 4
gpt4 key购买 nike

我正在使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com