Iphone,iPad屏幕尺寸采用编程方式的纵向和横向模式

时间:2011-06-08 14:01:50

标签: ios objective-c resize screen-size

这让我有点困惑。我知道UIScreen中关于大小屏幕的2个属性,就像在这个问题中使用applicationFrame一样,这使用了bounds

  • applicationFrame - 显示设备的大小减去statusBar。在iPhone中制作NSLog,我得到这个值:(x = 0,y = 20,身高= 460,宽度= 320)
  • bounds - 显示所有尺寸的屏幕。值为:(x = 0,y = 0,高度= 480,宽度= 320)

现在,如果我将设备(potrait旋转到ladscape)旋转,这将显示 (边界将是所有相同的值)

  • 转到功能: shouldAutorotateToInterfaceOrientation :x = 0 y = 20 height = 460 width = 320
  • 返回YES所以
  • Go函数: didRotateFromInterfaceOrientation :x = 20 y = 0 height = 480 width = 300
  • 我不知道为什么,但是这次再次传递 shouldAutorotateToInterfaceOrientation 并显示:x = 20 y = 0 height = 480 width = 300(这是一个错误?)

我想将视图调整为这个新大小,但是如果我得到CGRect,它将在didRotateFromInterfaceOrientation中给出正确的大小,高度将是宽度,反之亦然。

有没有一种很好的方法可以在没有手动设置这个值的情况下美化大小我的视图?

1 个答案:

答案 0 :(得分:1)

(假设这一点是从风景转回到肖像)

  

我不知道为什么,但这传递了一个   更多时间   shouldAutorotateToInterfaceOrientation   并显示:x = 20 y = 0 height = 480 width =   300(这是一个错误吗?)

它不是一个错误!

在UI旋转以匹配设备的方向之前,应调用AutorotateToInterfaceOrientation。因此,在第一种情况下(纵向到横向),它为纵向方向提供了矩形。在第二种情况下(横向到纵向),它为您提供横向方向的矩形。

底线:
shouldAutorotateToInterfaceOrientation 在启动UI旋转之前提供CGRect值 didRotateFromInterfaceOrientation 在完成UI轮换后提供CGRect值

我建议您查看UIView的autoresizesSubviews and autoresizingMask属性。当您处理必须旋转/调整大小的视图时,这会节省很多麻烦。

希望我已经回答了你的问题,你觉得这很有用!