2011-06-08 70 views
2

这让我有点混淆。我知道UIScreen中关于尺寸屏幕的2个属性,就像在这个问题中使用applicationFrame,而这个属性使用boundsIphone,iPad的屏幕尺寸与编程方式的肖像和ladscape模式

  • applicationFrame - 显示设备的大小减去statusBar。在iPhone中制作一个NSLog,我得到这个值:(x = 0,y = 20,height = 460,width = 320)
  • 界限 - 显示所有大小屏幕。的值是:(X = 0,Y = 0,高度= 480,宽度= 320)现在

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

  • 转到发挥功能:shouldAutorotateToInterfaceOrientation:x = 0时Y = 20高度= 460宽度= 320
  • 返回YES,以便
  • 转到功能:didRotateFromInterfaceOrientation:X = 20 Y = 0他飞行= 480宽度= 300
  • 我不知道为什么,但是这通一个更shouldAutorotateToInterfaceOrientation和放映时间:X = 20 Y = 0高度= 480宽度= 300(这是一个错误?)

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

有没有一种很好的方式来美观地调整我的视图的大小,而无需手动设置这些值?

+1

你看过autoresizingMask吗? – dasdom 2011-06-08 14:20:05

+0

你使用UIViewController来显示你的视图吗? – 2011-06-17 19:25:27

回答

1

(假设这点是从横向旋转回纵向)

我不知道为什么,但传中 shouldAutorotateToInterfaceOrientation 并显示一个 更多的时间:X = 20 Y = 0高度= 480宽度= 300(这是一个错误?)

它不是一个错误!

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

底线:
shouldAutorotateToInterfaceOrientation发起UI旋转 didRotateFromInterfaceOrientation完成UI的旋转

我建议你看的UIView autoresizesSubviews and autoresizingMask性质后给出的CGRect值之前给出的CGRect值。当您处理必须旋转/调整大小的视图时,这可以节省很多麻烦。

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

+0

autoresizeSubviews和autoresizingMask就是答案!这项工作非常好!谢谢 – Rodrigo 2011-07-24 20:00:04