UIView convertRect: - 找到子视图位置两个视图深
UIView convertRect: - finding subview position two views deep
在下图中,每个矩形都是一个UIView。视图A对视图C有弱引用,视图A创建了视图D,需要将其作为子视图添加到视图C中,使视图A被完全覆盖。因此,我需要获得视图 A 相对于视图 C 的位置。将视图 D 添加为视图 A 在 {0,0} 的子视图对于这种特殊情况不是一个选项 - 它必须是 C 的子视图。
查看层次结构起点
查看层级目标点
我已经尝试了我能想到的 convertRect:toView:
和 convertRect:fromView:
的所有组合,将三个视图的组合作为发送者和接收者传递,并使用它们的子视图,但是也有许多组合,我只是不明白它是如何工作的。如果有人能首先 post 正确的语法,我将不胜感激,这样我就可以让它工作,更重要的是,这样我就可以通过一个工作示例来理解该函数的实际作用。
非常感谢!
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];
在下图中,每个矩形都是一个UIView。视图A对视图C有弱引用,视图A创建了视图D,需要将其作为子视图添加到视图C中,使视图A被完全覆盖。因此,我需要获得视图 A 相对于视图 C 的位置。将视图 D 添加为视图 A 在 {0,0} 的子视图对于这种特殊情况不是一个选项 - 它必须是 C 的子视图。
查看层次结构起点
查看层级目标点
我已经尝试了我能想到的 convertRect:toView:
和 convertRect:fromView:
的所有组合,将三个视图的组合作为发送者和接收者传递,并使用它们的子视图,但是也有许多组合,我只是不明白它是如何工作的。如果有人能首先 post 正确的语法,我将不胜感激,这样我就可以让它工作,更重要的是,这样我就可以通过一个工作示例来理解该函数的实际作用。
非常感谢!
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];