我正在尝试使用触摸移动方法移动另一个 UIView - “B”(SuperView)内的 UIView - “A”( subview )。我可以将 UIView 移动到 super View 之外。我想限制 Superview 边界内的 UIView。有什么办法可以有一个通用的方法来测试 subview 是否在 super View 的可见矩形内???

最佳答案

听起来您想限制 subview (viewA) 的移动,使其始终完全被父 View (viewB) 包含。 CGRectContainsRect 是正确的答案,但必须谨慎应用,因为 subview 框架是在其父 View 的坐标系中指定的。

// inside touches moved, compute the newViewAFrame based on the movement
// but only assign it if it meets the containment constraint:

if (CGRectContainsRect(viewB.bounds, newViewAFrame)) {
    viewA.frame = newViewAFrame;
}

请注意,我们没有在检查中提及 viewB.frame。 viewB 在其父级中的位置与 viewB 是否包含 viewA 无关。

10-08 05:42