2010-07-19 89 views
2

我讀了蘋果文檔中的point/pixels位,但仍然不是完全清楚。 我試圖完成的工作是將一個工具欄放在觸摸textview時出現的鍵盤上方。 IOS4之前的工作方式是將工具欄放置在位置0,480處,然後通過從Y座標中減去keypad.size.y來實現。在IOS4中,只要我使用3gs模擬器,它仍然可以正常工作,但只要切換到巨型iphone4模擬器,工具欄就不會出現鍵盤,因爲它只會移動到屏幕外某處。Iphone的高清屏幕沒有映射到繪圖座標

我明白現在是當它涉及到計算屏幕座標和有意義使用類似

CGRect phoneRect = [Util getPhoneScreenSize]; 
CGSize phoneSize = phoneRect.size; 
CGRect toolbarFrame = CGRectMake(0, phoneSize.height, phoneSize.width, 44); 

其中getPhoneScreenSize更換商工具欄的起始位置(0480)參與比例因子:

+(CGRect) getPhoneScreenSize 
{ 
UIScreen *mainScreen = [UIScreen mainScreen]; 
CGRect bounds = [mainScreen bounds]; 
CGRect phoneRect = bounds; 

if([[UIScreen mainScreen] respondsToSelector:NSSelectorFromString(@"scale")]) 
{ 
    CGFloat scale = [mainScreen scale]; 

    if (scale > 0) { 
    phoneRect.origin.x *= scale; 
    phoneRect.origin.y *= scale; 
    phoneRect.size.width *= scale; 
    phoneRect.size.height *= scale; 
    } 

} 

return phoneRect; 
} 

但仍然令人困惑的部分是,雖然我從getPhoneScreenSize獲得正確的分辨率爲640 x 960的高清屏幕,使用這些座標設置我的工具欄剛好在屏幕外(0,960)將事實上p將它從屏幕上拉開,並使其不再出現。 似乎高清屏幕的大小沒有映射到我需要使用的繪圖座標來放置在同一屏幕上的確切位置的東西。 模擬器對我來說很奇怪嗎?或者我錯過了什麼?

+0

其時代喜歡這些我希望inputAccessoryView之前3.2 :(可選路了。 – 2010-07-19 19:26:04

回答

1

假裝手機仍然是320x480,一切都會正常工作。

+0

沒有意義,爲什麼要開發無法訪問所有640×960像素的屏幕上? – Oysio 2010-07-19 19:59:41

+0

他們這樣做。閱讀文檔。 – 2010-07-20 11:48:59

0

也許你不應該通過從主屏幕尺寸獲取來計算工具條矩形。如果您在UIViewController中,請嘗試獲取當前視圖,然後相應地設置工具欄。這是我工作代碼的一部分,用於將工具欄設置在底部。

CGRect mainViewBounds = self.view.bounds; 

CGRect toolbarFrame = CGRectMake(CGRectGetMinX(mainViewBounds), 
          CGRectGetMinY(mainViewBounds) + CGRectGetHeight(mainViewBounds) - toolbarHeight, 
          CGRectGetWidth(mainViewBounds), 
          toolbarHeight); 

[_toolbar setFrame:toolbarFrame];