如何将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)