2011-06-08 72 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