为什么横向视图报告它的中心就好像它是肖像?

时间:2013-03-05 21:33:12

标签: ios uiview frame uiinterfaceorientation bounds

我有一个只有风景的应用程序。这些观点在IB中被设计为景观(568x320)。然而,当我这样做时:

NSLog(@"view center: %@", NSStringFromCGPoint(self.view.center));

我明白了:

view center: {160, 284}

这是该中心在肖像模式中的位置。这导致了很多问题,因为我想把东西放在视图的中心。为什么视图认为它处于纵向模式,以及在视图中居中的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

这里的中心是指框架的中心。请记住,当设备执行时,框架不会旋转。只有框架内的边界旋转。

因此,如果您正在编写依赖于设备方向的代码,则应使用边界以获取视图的中心(x,y坐标),您将使用此:

self.view.bounds.size.width / 2和self.view.bounds.size.height / 2.

在我的iPhone5上,我得到:

  • (160,274)用于人像模式下的视野。这是有道理的,因为纵向的全视图尺寸是(320,568)。你在状态栏的y轴上松了20个点。
  • (284,150)用于风景模式中的视野。这是有道理的,因为景观中的全景尺寸是(568,320)。你在状态栏的y轴上松了20个点。

上面的我的xy引用随设备一起旋转。所以x总是从左到右,y总是从上到下