簡體   English   中英

如何將SubView的Frame坐標系轉換為Self View的坐標系

[英]How to convert SubView's Frame Coordinate System to Self View's Coordinate System

我以編程方式創建一個scrollView和一些內部按鈕。 當我點擊任何按鈕時必須顯示一個彈出窗口。

我的按鈕在self.view中的起源就像(100,11),在scrollView(9,11)里面,scrowView在self.view的某個地方。 彈出窗口顯示在(9,11)但右邊一個是(100,11)。 我嘗試使用轉換沒有成功。

-(IBAction)showPopover:(id)sender{
//... implemented popover above

//Wrong Origin:
NSLog(@"wrong x:%f y:%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:%f y:%f",frame.origin.x, frame.origin.y);
}

有人幫我嗎?

視圖的框架已經在superview的坐標系中。 所以,如果你的設置是self.view包含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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM