使用convertPoint获取父UIView中的相对位置

我已经看了十几个关于这个话题的SO问题,没有任何答案对我有用。 也许这会帮助我走上正确的道路。

想象一下这个设置:

在这里输入图像说明

我想获得相对于UIView的UIButton的center坐标。

换句话说,UIButton中心可能是215,80内的UITableViewCell,但相对于UIView他们应该更像260,165。我该如何转换?

以下是我所尝试的:

 [[self.view superview] convertPoint:button.center fromView:button]; // fail [button convertPoint:button.center toView:self.view]; // fail [button convertPoint:button.center toView:nil]; // fail [button convertPoint:button.center toView:[[UIApplication sharedApplication] keyWindow]]; // fail 

我可以通过循环遍历button的所有超级视图并添加x和y坐标来实现,但我怀疑这是过度的。 我只需要find正确的covertPoint设置组合。 对?

4 Solutions collect form web for “使用convertPoint获取父UIView中的相对位置”

button.center是在其superview的坐标系中指定的中心,所以我假定以下工作:

 CGPoint p = [button.superview convertPoint:button.center toView:self.view] 

或者你在自己的坐标系中计算button的中心,并使用:

 CGPoint buttonCenter = CGPointMake(button.bounds.origin.x + button.bounds.size.width/2, button.bounds.origin.y + button.bounds.size.height/2); CGPoint p = [button convertPoint:buttonCenter toView:self.view]; 

Swift 3

 var p = button.convertPoint(button.center, to: self.view) 

马丁的回答是正确的。 对于使用Swift的开发人员,您可以使用以下命令获取对象(button,视图,…)相对于屏幕的位置:

 var p = obj.convertPoint(obj.center, toView: self.view) println(px) // this prints the x coordinate of 'obj' relative to the screen println(py) // this prints the y coordinate of 'obj' relative to the screen 

在swift中2.2为我工作:

 var OrignTxtNomeCliente:CGPoint! if let orign = TXT_NomeCliente.superview, let win = UIApplication.sharedApplication().keyWindow { OrignTxtNomeCliente = orign.convertPoint(TXT_NomeCliente.frame.origin, toView: win) } 

这里是@Pablo答案的Swift 3更新,对我来说这非常好。

 if let window = UIApplication.shared.keyWindow { parent.convert(child.frame.origin, to: window) } 
  • 在Objective-C中replacestring中的一个字符
  • 从UIColor预设中获取RGB值
  • didUpdateLocations而不是didUpdateToLocation
  • ARC和桥接投
  • UIAlertController自定义字体,大小,颜色
  • iOS内存分配 - 可以在应用程序中使用多less内存?
  • UILabel与两种不同颜色的文字
  • UIViewController初始化和加载顺序
  • 为什么Objective-C的代表通常给予属性赋值而不是保留?
  • 如何添加一个CGPoint到NSMutableArray?
  • Objective-C与块的延迟行为