在下面的图片中,每个矩形都是一个 UIView。 View A 对 View C 有弱引用。 View A 创建 View D,需要将其作为 subview 添加到 View C,以便完全覆盖 View A。因此,我需要获取 View A 相对于 View C 的位置。在 {0,0} 处添加 View D 作为 View A 的 subview 不是此特定情况下的选项 - 它必须是 C 的 subview 。

查看层次结构起点
ios - UIView convertRect : - finding subview position two views deep-LMLPHP

查看层次结构目标点
ios - UIView convertRect : - finding subview position two views deep-LMLPHP

我已经尝试了我能想到的 convertRect:toView:convertRect:fromView: 的所有组合,将三个 View 的组合作为发送方和接收方以及使用它们的 subview 传递,但是组合太多,我无法理解它是如何工作的。如果有人可以首先发布正确的语法,我将非常感激,这样我就可以让它工作,更重要的是,这样我就可以通过一个工作示例来了解该函数实际在做什么。

提前谢谢了!

最佳答案

convertRect: 是正确的方法:

let viewD = UIView()
viewD.frame = viewA.viewC.convertRect(viewA.frame, fromView: viewA.superview!)
viewA.viewC.addSubview(viewD)

在 Objective-C 中:
UIView *viewD = [[UIView alloc] init];
viewD.frame = [viewA.viewC convertRect:viewA.frame fromView:viewA.superview];
[viewA.viewC addSubview:viewD];

关于ios - UIView convertRect : - finding subview position two views deep,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36548998/

10-14 20:15