iOS >>拖动视图正在跳回原始位置>>自动布局结合UIPanGestureRecognizer问题

iOS >>拖动视图正在跳回原始位置>>自动布局结合UIPanGestureRecognizer问题,第1张

概述我有几个UIViews,用户应该能够拖放下降.我使用UIPanGestureRecognizer来管理d& d动作(见下面的代码). d& d动作正常,但当我开始拖动另一个UIView时,我刚刚掉下的UIView就跳回了原来的位置. - (void)handlePan:(UIPanGestureRecognizer *)recognizer { CGPoint translation = 我有几个UIVIEws,用户应该能够拖放下降.我使用UIPanGestureRecognizer来管理d& d动作(见下面的代码). d& d动作正常,但当我开始拖动另一个UIVIEw时,我刚刚掉下的UIVIEw就跳回了原来的位置.
- (voID)handlePan:(UIPanGestureRecognizer *)recognizer {    CGPoint translation = [recognizer translationInVIEw:self.vIEw];    switch (recognizer.state) {        case UIGestureRecognizerStateBegan:            for (UIVIEw* checkVIEw in dragAndDropImageVIEwsArray) {                if (checkVIEw == recognizer.vIEw) {                    [checkVIEw.supervIEw bringSubvIEwToFront:checkVIEw]; //this is done to make sure the currently dragged object is the top one                }            }            break;        case UIGestureRecognizerStateChanged:            recognizer.vIEw.center = CGPointMake(recognizer.vIEw.center.x + translation.x,recognizer.vIEw.center.y + translation.y);            break;        case UIGestureRecognizerStateEnded:            NSLog(@"UIGestureRecognizerStateEnded");            break;        default:            break;    }    [recognizer setTranslation:CGPointMake(0,0) inVIEw:self.vIEw];}

我尝试过几件事情“玷污”了问题,但是引起了其他问题:

>取消自动布局:完全解决了它,但现在我必须开始计算和管理不同设备和方向的对象位置和大小.
>使用layer.zposition而不是bringSubvIEwToFront:使对象显示在其他对象上方,同时显然避免了“跳回”,但不允许我更改不同的可拖动对象之间的层次结构.

我开始深入了解自动布局的理解,但在我看来,我正在寻找的内容应该很简单,但是它变得非常复杂.我看到许多处理执行“重新自动布局”的方法,但是我不清楚如何使用它们.

这里有简单的解决方案吗?像调用覆盖IB自动布局约束的方法,并根据UIVIEw新位置重新定义它们?

任何帮助将是非常musch赞赏.

解决方法 我认为,如果您使用autolayout,并且要更改视图的位置,则需要更新视图上的约束,而不是手动设置视图的中心.从描述看来,您正在设置中心,但是当应用程序接下来显示视图(例如,拖动另一个视图)时,它将中心重新设置为任何自动布局应该是这样的.

我不知道您的应用程序的其余部分是什么样的,但您可能可以找到附近的视图并添加约束,或者您可能更喜欢仅更新拖动视图的约束,并设置前导空间和顶部空间手动监视如果你有一个集合方便,你也可以清除所有的约束,然后重新添加它们,因为你希望保持填充之间的意见.

要在代码中设置约束,您可以清除移动视图的约束并重新添加它们,或者如果您在IB中有一个视图,则可以将约束拖放到代码中以创建出口.看看removeConstraints和addConstraints方法在代码中执行.

最后,如果没有自动布局,您可以尝试在移动的视图中设置翻译autotoresizingMaskIntoConstraints = YES,但请注意,可能会在其他地方造成冲突.

总结

以上是内存溢出为你收集整理的iOS >>拖动视图正在跳回原始位置>>自动布局结合UIPanGestureRecognizer问题全部内容,希望文章能够帮你解决iOS >>拖动视图正在跳回原始位置>>自动布局结合UIPanGestureRecognizer问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1108496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存