2011-06-23 26 views
33

我有一個在橫向模式下創建的視圖(長時間旋轉等)。
在這個視圖中,我想找到一個相對於主窗口的點。
以下代碼在縱向模式下工作,但在landscappe中它仍然返回值,就好像它是縱向模式一樣。convertPoint:toView:在橫向模式下給出錯誤的值

CGPoint ptRelativeToWindow = [self convertPoint:self.bounds.origin toView:nil]; 

解決

這解決了這個問題,並給出正確的座標:

[self convertPoint:self.bounds.origin toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; 
+0

任何特定的方式,我們可以重現此錯誤?我試過你的代碼,它正確返回值。 –

+0

在iOS6中,您的'解決方案'再次使用縱向視圖。 –

+0

解決方案在iOS7中運行,謝謝。 –

回答

15

不能使用主窗口來計算相對座標。主窗口接收旋轉事件並將它們傳遞到控制器上,這意味着它不會自行更改大小(始終具有相同的縱向邊界)。這就是爲什麼你找到的解決方案是有道理的:你找到相對於接收旋轉事件的根控制器視圖的座標,並相應地改變其大小