Objective-C:检查 View 是否触及另一个 View

标签 objective-c ios user-interface view

我使用 (..) [UIView commitAnimations] 为很多 View 设置动画。 现在我想检查被“拍摄”的 View 是否触及了另一个 View 。 有谁知道如何实现这个? 也许 if(view.frame.origin.x==anotherview.frame.origin.x){ ..

最佳答案

从概念上讲,如果一个 View 的边界矩形相交,则一个 View “接触”另一个 View 。因此,要比较两个 View 的边界矩形,您需要执行如下操作:

Boolean viewsOverlap = CGRectIntersectsRect(viewA.bounds, viewB.bounds);

但是单独这样做是行不通的,因为 View 的边界矩形是在它们自己的坐标空间中指定的(意味着它们都从 0,0 开始,等等)所以你还需要在比较它们之前将矩形转换为公共(public)坐标空间:

CGRect boundsA = [viewA convertRect:viewA.bounds toView:nil];
CGRect boundsB = [viewB convertRect:viewB.bounds toView:nil];
Boolean viewsOverlap = CGRectIntersectsRect(boundsA, boundsB);

从那里,您应该能够弄清楚如何有效地遍历您关心的 View 列表以确定是否有任何重叠。

关于Objective-C:检查 View 是否触及另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553213/

相关文章:

ios - 如何将 base 64 图像数据字符串提供给 UIWebView?

ios - 如何获取可用输出音频源列表(扬声器、耳机、蓝牙)

java - 在服务器/客户端程序中发送给所有人与发送给一个人

python 输入被读取错误?

database - Parse.com 数据库查询浏览器

ios8 UIImage imageNamed : crash

ios - 如何在 UITextView 中设置文本边距?

ios - [self performSegueWithIdentifier : @"login_success" sender:self]; 时崩溃

ios - UITableViewCell - 根据内容选择背景大小

iOS Google Sign In SDK webview 签名后不关闭