2009-04-10 9 views
6

ここの情報を使用:iPhone Landscape-Only Utility-Template Application私はランドスケープとして私のビューを起動、使用、維持することができます。しかし、私は軸について混乱しています。iPhoneランドスケープオンリーアプリビュー軸の混乱

絶対軸は、(0,0)が左上、(240,0)が上中央、(0,320)が左下角などを意味します。しかし、私がしようとすると私が描いているビューに関連する計算は、x、yが肖像画の左上が原点であるかのように向いていることがわかります。だから私がする必要がある私のビューコントローラの中央点で何かを描画する:

CGPoint center = CGPointMake(self.view.center.y, self.view.center.x); 

私が原因私のコントローラself.viewによって参照UIViewのは、それはそれに対する相対値を囲んだのです与えているという事実にこれを前提としこれは、ポートレートモードの左上に軸の原点を持つウィンドウを意味します。

これを説明する簡単な方法はありますか?

ドキュメントでは、トランスフォームプロパティが正確に私が探していることを示唆していますが、私はここでさらに混乱しています。私はのviewDidLoadでこれを行う場合は

  • フレーム
  • 境界
  • センター:

    // calculate new center point 
    CGFloat x = self.view.bounds.size.width/2.0; 
    CGFloat y = self.view.bounds.size.height/2.0; 
    CGPoint center = CGPointMake(y, x); 
    
    // set the new center point 
    self.view.center = center; 
    
    // Rotate the view 90 degrees counter clockwise around the new center point. 
    CGAffineTransform transform = self.view.transform; 
    transform = CGAffineTransformRotate(transform, -(M_PI/2.0)); 
    self.view.transform = transform; 
    

    今すぐリファレンスドキュメントによると、もし関連する3つの本質的な特性があります。 transformはidentity変換に設定されていません。self.view.frameは未定義です。だから私は限界と中心で作業する必要があります。

    self.view.centerは正しくなっています。なぜなら、私はそれが欲しいものに設定しているからです。 self.view.boundsは変更されていません。 self.view.frameはまさに私が欲しいものですが、上記のように、参照は無効であると主張しています。

    私は正しい数字であると信じているものを得ることができますが、後に面倒になる重大なものが見落とされる恐れがあります。

    ありがとうございました。

答えて

2

Quartz 2Dの座標系は、左上隅ではなく、グラフィックの左下隅に原点(0,0)を持ちます。たぶんそれはあなたが欠けているものです。

参照:http://developer.apple.com/documentation/graphicsimaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html#//apple_ref/doc/uid/TP30001066-CH202-CJBBAEEC

+0

が答えてくれてありがとう、しかしビュージオメトリのiPhoneアプリケーション開発者ガイドセクションに従って:http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide /WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40007072-CH8-SW5あなたが指摘していることは問題ではない –

+1

そして、読んだままにしておくと、「Quartzが使用している座標系は左上あなたがQuartzを使って描画環境を自分でセットアップするときには、これらの異なる座標系を考慮する必要がある時しかありません。 Quartzを使用して手動で画面に描画する場合は、答えがあります:) –