大佬教程收集整理的这篇文章主要介绍了iOS >>拖动视图正在跳回原始位置>>自动布局结合UIPanGestureRecognizer问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
- (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赞赏.
我不知道您的应用程序的其余部分是什么样的,但您可能可以找到附近的视图并添加约束,或者您可能更喜欢仅更新拖动视图的约束,并设置前导空间和顶部空间手动监视如果你有一个集合方便,你也可以清除所有的约束,然后重新添加它们,因为你希望保持填充之间的意见.
要在代码中设置约束,您可以清除移动视图的约束并重新添加它们,或者如果您在IB中有一个视图,则可以将约束拖放到代码中以创建出口.看看removeConsTraints和addConsTraints方法在代码中执行.
最后,如果没有自动布局,您可以尝试在移动的视图中设置翻译AutotoresizingMaskIntoConsTraints = YES,但请注意,可能会在其他地方造成冲突.
以上是大佬教程为你收集整理的iOS >>拖动视图正在跳回原始位置>>自动布局结合UIPanGestureRecognizer问题全部内容,希望文章能够帮你解决iOS >>拖动视图正在跳回原始位置>>自动布局结合UIPanGestureRecognizer问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。