0

我想在行和列中找出按行和列排序的 UIView、超级视图内的子视图,同时拖动其中一个,然后让它与其他所有视图中的哪一个与其更大区域相交。

我需要这个在相交的 UIView 之间插入可拖动的 UIView。

我必须计算 frame.origin 值吗?如果是,我可以举个例子吗?或者这可能使用 iOS SDK 发生?

我已经知道 CGRectIntersectsRect 但这给了我第一个相交的 UIView。尽管它最可能需要将 UIView 放置在其他 UIView 之间。我有一个使用 pointInside 的例子,但没有运气。

代码:

CGPoint centerInView = [viewDragged convertPoint:viewDragged.center toView:view]; // Checking with the views inside NSMutableArray in a for in statement

if ([view pointInside:centerInView withEvent:nil]) // This if statement almost never is true sometimes only

其他方法:

if (CGRectIntersectsRect(viewDragged.frame, view.frame)) // This always happens for the first UIView in subviews that intersects. Not so applicable for information

基本上这个想法是在最近的 UIViews 之间插入可拖动的视图。

想象屏幕中有 1,2,3,4,5 个相同大小的视图,并尝试拖动第一个让它在 4,5 之间移动,然后有 2,3,4,1,5。你明白了。这一切都应该在没有任何新网格的帮助下发生。我需要的唯一部分是计算您将 1 UIView 放在 4,5 之间。

我可以开始计算帧、原点,但这对我来说听起来效率不高。有什么想法吗?

谢谢你。

4

1 回答 1

1

我现在这是一个老问题,但这可能会有所帮助。具有最大 CGRect 交点的视图被“选中”。

CGRect intersect = CGRectZero;
UIView *selectedDropView = nil;
for (UIView *dropView in dropViews) {
    CGRect intersectTmp = (CGRectIntersection(self.frame, dropView.frame));
    if (intersectTmp.size.width * intersectTmp.size.height > intersect.size.width * intersect.size.height) {
        intersect = intersectTmp;
        selectedDropView = dropView;
    }
}
于 2013-05-02T19:35:40.950 回答