2

在此处输入图像描述

如上图所示,在 UIView B 上添加了 UIView A 和 UIView C。对于 B ClipToBounds 为 YES,因此红色区域不可见。

是否有可能获得 A & C 的可见矩形(用线条显示)

当我触摸视图 A 时,我需要在可见区域显示矩形。就是这样。

在此处输入图像描述

4

4 回答 4

3

您可以使用CGRectIntersection()方法获得两个矩形的交集矩形

CGRect intersectionRect = CGRectIntersection(viewA.frame, viewB.frame);
if(CGRectIsNull(intersectionRect)) {
   //Rects do not intersect
}
于 2013-07-17T10:08:31.470 回答
2

是的,您可以使用此功能:

CGRect CGRectIntersection (
   CGRect r1,
   CGRect r2
);

如果你确切地告诉你想要做什么可能是更好的方法,例如我需要类似的东西而不是手动裁剪,我只是将 UIView B 内容捕获为图像。

于 2013-07-17T10:09:25.350 回答
0

用于此

[UIView convertRect:<#(CGRect)#> fromView:<#(UIView *)#>]
[UIView convertRect:<#(CGRect)#> toView:<#(UIView *)#>]

和 CGRectIntersection 函数

于 2013-07-17T10:21:37.733 回答
0

touchesEnded:方法上,您可以像下面这样找到它..

  -(void) touchesEnded:(NSSet *) touches {
    if(CGRectIntersectsRect([ViewA frame], [ViewB frame]) {
      //Do something here
    }
  }

从此链接阅读有关 RectInterSect 的更多信息

我希望它对你有帮助......

于 2013-07-17T10:28:24.273 回答