使用此处的信息:iPhone Landscape-Only Utility-Template Application我能够启动、使用和维护我的视图仅作为横向。但是,我对轴感到困惑。
绝对轴的行为符合预期,意味着 (0,0) 是左上角,(240,0) 是顶部中心,(0,320) 是左下角,等等。但是,当我尝试进行与我正在绘制的视图我发现 x,y 的方向就像左上角的肖像是原点一样。所以要在我的视图控制器的中心点绘制一些东西,我需要做:
CGPoint center = CGPointMake(self.view.center.y, self.view.center.x);
我假设这是因为我的控制器 self.view 引用的 UIView 给出了相对于它的封闭框架的值,这意味着在纵向模式下其轴原点位于左上角的窗口。
有没有一些简单的方法来解释我错过的这一点?
文档表明 transform 属性正是我正在寻找的,但是,我在这里遇到了进一步的困惑。涉及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;
现在根据参考文档,如果未将变换设置为身份变换 self.view.frame 未定义。所以我应该使用边界和中心。
self.view.center 现在是正确的,因为我将它设置为我想要的。self.view.bounds 看起来没有改变。self.view.frame 似乎正是我想要的,但如上所述,参考声称它是无效的。
因此,虽然我可以得到我认为正确的数字,但我担心我忽略了一些关键的东西,以后会变得麻烦。
谢谢。