2011-06-23 9 views
33

私は風景モード(回転後など)で作成されたビューを持っています。
このビューでは、メインウィンドウに相対的な点を探したいと思います。
次のコードはポートレートモードで動作しますが、ランドスケープではポートレートのように値を返します。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

あなたは相対座標を計算するために、メインウィンドウを使用することはできません。メインウィンドウは回転イベントを受け取ってコントローラに渡します。つまり、サイズ自体は変更されません(常に同じポートレート境界を持ちます)。そのため、あなたが見つけた解決策が理にかなっています:回転イベントを受け取り、それに応じてサイズを変更するルートコントローラのビューに相対的な座標を見つける

関連する問題