我有一个图像视图,它是较大图像视图的子视图。子视图可以在较大的图像视图周围移动,但我希望能够检测大视图的边缘,以便子视图不能移动到它之外,但我不知道如何完成它。
答案 0 :(得分:2)
在更新子视图的框架时(顺便说一下,它不需要是子视图,但下面的坐标逻辑假设如此),检查约束
CGRect intersection = CGRectIntersection(subview.frame, superview.bounds);
BOOL fullyContained = CGSizeEqualToSize(intersection.size, subview.size);
更为紧凑,正如@ZevEisenberg所提出的那样:
BOOL fullyContained = CGRectContainsRect(subview.frame, superview.bounds);
如果两个视图属于同一个超级视图,只要视觉包含的视图堆叠在顶部(在superview的子视图阵列中的较大图像视图之后出现)就可以了,那么更容易:
BOOL fullyContained = CGRectContainsRect(subview.frame, superview.frame);