2011-02-17 66 views
0

我已經在XCode中創建了一個新的基於iPhone視圖的項目,我看看生成的xib,名稱爲myAppViewController.xib。在該xib中,生成的視圖的框架如下所示:{ x = 160, y = 230, w = 320, h = 460 }此視圖應填充整個屏幕,不包括狀態欄。我期望視圖的框架如下所示:舊版iPhone的{ x = 0, y = 0, w = 240, y = 300 },以及視網膜顯示的{ x = 0, y = 0, w = 480, h = 600 }。但是,我得到了上面那些奇怪的值。任何人都可以向我解釋這裏發生了什麼,它破壞了我的其他項目中的一些繪圖代碼(繪製的區域基於視圖的框架)。UIView框架大於iPhone的屏幕

+0

UIKit將像素(絕對分辨率)抽象爲點。對於視網膜顯示器來說,整個尺寸(通過UIKit)仍然是320x480,但你可以有半個點(例如(10.5,30.5))。 – MHC 2011-02-17 19:38:17

回答

3

視網膜顯示並不實際增加視圖的點大小。
當蘋果推出它時,它在像素之間有所區別。視網膜顯示器有更多的像素,但點數相同。
與UIKit相關的代碼中的所有內容通常都是以點爲單位的,因此不需要進行任何更改,100x100的視圖仍將保持該大小。

我真的不明白你的問題,但幀值可以通過界限屬性和中心屬性被修改......如此檢查,如果你不修改這些。

+0

沒關係,我想的是一個320×240分辨率(oops)的不同設備:) – 2011-02-17 19:42:36

2

幀rects是這樣:

CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height) 

屏幕寬度是320像素寬×480像素高。狀態欄是20px。因此您想要的矩形是:

CGRectMake(0,0,320,460) 

無論視網膜與否,設備都會根據需要進行轉換。

+0

沒關係,我想的是具有320 x 240分辨率的不同設備(oops):) – 2011-02-17 19:43:29

0

座標以點爲單位,而不是像素。無論屏幕的分辨率如何,座標系都是320 X 480。