如何将SubView的框架坐标系转换为Self View的坐标系

我编程创build一个scrollView和一些button里面。 当我点击任何button都必须显示一个popup窗口。

我的button在self.view中的起源是(100,11)和scrollView(9,11)内部,而scrowView是在self.view中的某处。 (9,11)中的popover显示,但右边显示的是(100,11)。 我尝试使用转换没有成功。

-(IBAction)showPopover:(id)sender{ //... implemented popover above //Wrong Origin: NSLog(@"wrong x:%fy:%f",[sender frame].origin.x, [sender frame].origin.y); //Transform to correct CGRect frame = [self.view convertRect:[sender frame] toView:nil]; //Shoulf be right, but is not... NSLog(@"new x:%fy:%f",frame.origin.x, frame.origin.y); } 

任何摄像头帮助我?

视图的框架已经在超视图的坐标系中。 所以,如果你的设置是scrollview包含scrollview包含sender

 CGRect frame = [sender.superview convertRect:sender.frame toView:self.view]; // or, better: CGRect frame = [sender convertRect:sender.bounds toView:self.view]; 

迅速:

 let frame = sender.convert(sender.bounds to: self.view)