为什么我的观点在拖拽他人观点的同时落后于他人观点?
Why Are My Views Going Behind My Others Views While Dragging Them?
首先我将介绍上下文,尽可能清楚(如果需要,我可以添加一些屏幕截图)。
我实际上正在开发一款用于管理大量可拖动视图(称为 PostIts)的应用程序。这些 PostIts 存储在其他不可拖动的视图中。
想象一下,就像我有 2 个远处的盒子,里面有很多 PostIts:
| * | |* *|
|* *| <- distance -> | * |
|____| |____|
我的问题: 当我开始将 PostIt 拖到实际包含它的视图中时,没有问题。 但是,当我试图走出实际视图去另一个视图(例如)时,PostIt 在遇到视图的边界时开始消失。
| * | |* *|
|* *--> disappearing.. | * |
|____| |____|
回到我的图像示例: 这就像当您从一个盒子里挑选一个 PostIt 并将其移动到里面时,一切都很好。但是当你走出盒子去另一个盒子时,PostIt 变得不可见 但你仍然拥有它 因为当你将不可见的 PostIt 放入另一个盒子时它会重新出现(我有一些方法可以按顺序重新加载框中的数据)。
| * | |* *|
|* *--> disappearing --> * *| ..reappearing
|____| |____|
我试过的方法:实际上我在 Z-index 中使用了一些东西,但这并不是很一致,我有很多错误:(这段代码是实际上在我的 UIPanGestureRecognizer
)
if (recognizer.state == UIGestureRecognizerStateBegan) {
CGPoint begin; // Creating a point because you can't directly change the x and t attribute of a point, you have to change the whole point
begin = selectpostit.postItC.centerOfThePostit;
begin.x -= _collectionView.contentOffset.x;
begin.y -= _collectionView.contentOffset.y;
selectpostit.center = begin;
}
[self.view insertSubview:selectpostit aboveSubview:self.view];
这里还有 10 个不一致的尝试:
CGPoint tmpPoint = selectpostit.center;
[[UIApplication sharedApplication].keyWindow addSubview:selectpostit];
selectpostit.center = tmpPoint;
self.view.layer.zPosition=1;
self.collectionView.layer.zPosition=1;
selectpostit.layer.zPosition = 1;
[self.view bringSubviewToFront:selectpostit];
[_collectionView bringSubviewToFront:selectpostit];
[selectpostit.superview bringSubviewToFront:selectpostit];
[self.view insertSubview:selectpostit atIndex:1];
可能是这些方法我用的不好?
我的问题: 有没有一种简单的方法可以将一个视图放在 所有其他视图 的前面(绝对所有other) 当我们开始拖放时(所以有 UIPanGestureRecognizer
) ?
PS: 里面应该有很多语法错误,sorry,我是法国人,解释起来有点复杂,没有错误,欢迎指正看到他们。
确保 PostIt 容器视图的 clipsToBounds
属性 没有值。
首先我将介绍上下文,尽可能清楚(如果需要,我可以添加一些屏幕截图)。
我实际上正在开发一款用于管理大量可拖动视图(称为 PostIts)的应用程序。这些 PostIts 存储在其他不可拖动的视图中。
想象一下,就像我有 2 个远处的盒子,里面有很多 PostIts:
| * | |* *|
|* *| <- distance -> | * |
|____| |____|
我的问题: 当我开始将 PostIt 拖到实际包含它的视图中时,没有问题。 但是,当我试图走出实际视图去另一个视图(例如)时,PostIt 在遇到视图的边界时开始消失。
| * | |* *|
|* *--> disappearing.. | * |
|____| |____|
回到我的图像示例: 这就像当您从一个盒子里挑选一个 PostIt 并将其移动到里面时,一切都很好。但是当你走出盒子去另一个盒子时,PostIt 变得不可见 但你仍然拥有它 因为当你将不可见的 PostIt 放入另一个盒子时它会重新出现(我有一些方法可以按顺序重新加载框中的数据)。
| * | |* *|
|* *--> disappearing --> * *| ..reappearing
|____| |____|
我试过的方法:实际上我在 Z-index 中使用了一些东西,但这并不是很一致,我有很多错误:(这段代码是实际上在我的 UIPanGestureRecognizer
)
if (recognizer.state == UIGestureRecognizerStateBegan) {
CGPoint begin; // Creating a point because you can't directly change the x and t attribute of a point, you have to change the whole point
begin = selectpostit.postItC.centerOfThePostit;
begin.x -= _collectionView.contentOffset.x;
begin.y -= _collectionView.contentOffset.y;
selectpostit.center = begin;
}
[self.view insertSubview:selectpostit aboveSubview:self.view];
这里还有 10 个不一致的尝试:
CGPoint tmpPoint = selectpostit.center;
[[UIApplication sharedApplication].keyWindow addSubview:selectpostit];
selectpostit.center = tmpPoint;
self.view.layer.zPosition=1;
self.collectionView.layer.zPosition=1;
selectpostit.layer.zPosition = 1;
[self.view bringSubviewToFront:selectpostit];
[_collectionView bringSubviewToFront:selectpostit];
[selectpostit.superview bringSubviewToFront:selectpostit];
[self.view insertSubview:selectpostit atIndex:1];
可能是这些方法我用的不好?
我的问题: 有没有一种简单的方法可以将一个视图放在 所有其他视图 的前面(绝对所有other) 当我们开始拖放时(所以有 UIPanGestureRecognizer
) ?
PS: 里面应该有很多语法错误,sorry,我是法国人,解释起来有点复杂,没有错误,欢迎指正看到他们。
确保 PostIt 容器视图的 clipsToBounds
属性 没有值。