iPhone仅限横向应用视图轴混淆

Kev*_*ter 6 iphone landscape uiviewcontroller

使用此处的信息:iPhone仅限横向实用程序 - 模板应用程序我能够仅以横向方式启动,使用和维护我的视图.但是,我对轴感到困惑.

绝对轴的行为与预期一致,意味着(0,0)是左上角,(240,0)是顶部中心,(0,320)是左下角等.但是,当我尝试做与之相关的计算时查看我正在绘制我发现x,y被定向为好像纵向左上角是原点.因此,要在我的视图控制器的中心点绘制一些东西,我需要这样做:

CGPoint center = CGPointMake(self.view.center.y, self.view.center.x);
Run Code Online (Sandbox Code Playgroud)

我假设这是因为我的控制器self.view引用的UIView给出了它相对于它的封闭框架的值,这意味着在纵向模式下它的轴的原点位于左上角.

是否有一些简单的方法来解释我错过了?

文档表明转换属性正是我正在寻找的,但是,我在这里遇到了进一步的混乱.涉及3个基本属性:

  • 界限
  • 中央

如果我在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;
Run Code Online (Sandbox Code Playgroud)

现在根据参考文档,如果未将变换设置为身份变换,则self.view.frame未定义.所以我应该与界限和中心一起工作.

self.view.center现在是正确的,因为我把它设置为我想要的.self.view.bounds看起来没有变化.self.view.frame似乎正是我想要的,但如上所述,该引用声称它是无效的.

因此,虽然我可以得到我认为正确的数字,但我担心我会忽略一些后来会变得麻烦的重要事情.

谢谢.

Jul*_*rgé 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