1

我有一个 320x460(标准 iPhone 屏幕)的视图,我想绘制它,就好像它处于横向模式一样,尽管手机不是这样定向的。这似乎是一个简单的任务,我试图通过创建一个大小为 460x320 的子视图来解决,然后通过设置视图转换将其旋转 90 度。这工作,除了旋转的视图没有正确居中。为了“解决”这个问题,我添加了一个翻译转换,最终看起来像这样:

CGAffineTransform rotate = CGAffineTransformMakeRotation(M_PI / 2.0);
[landscapeView setTransform: CGAffineTransformTranslate(rotate, 70.0, 70.0)];

我不介意进行一些调整转换,但我不知道神奇数字 70 的来源。我只是玩弄它,直到边缘正确匹配。我怎样才能摆脱它们,要么通过消除平移转换,要么通过与高度和宽度相关的一些有意义的数学推导数字?

4

2 回答 2

4

只是一种预感,但我猜测在转换之前您将 LandscapeView 的中心设置(或默认)为 (160, 230)。当它旋转时,它保持左上角的位置固定。

(320 像素屏幕宽度 - 460 像素宽度)= -140 像素。将它分成两半,因为它居中,你得到 -70 px。与垂直的想法相同。

于 2011-04-18T22:02:04.220 回答
2

70是宽度和高度的差除以二。(460 - 320) / 2. 除以二是视图的中心。

于 2011-04-18T22:02:18.760 回答