看這個action,假設乙個程式設計師自定義view並新增到他們的應用程式的根檢視控制器程式設計的自定義背景圖。以前寫了這個**:
1
uiview *custombackgroundview = [[uiview alloc]
2
initwithframe:
3
cgrectmake(0.0f, 0.0f, 320.0f, 480.0f)];
4
custombackgroundview.backgroundcolor = [uicolor redcolor];
5
custombackgroundview.autoresizingmask = uiviewautoresizingflexibleheight | uiviewautoresizingflexiblewidth;
6
[self.view addsubview:custombackgroundview];
在iphone 5之前的機器,上面的**塊會工作得很好。320×480的邏輯點對映到第640×960的iphone4/4s與預設2.0比例因子。然而,iphone 5上,仍然會被對映的高度960畫素,並會在短
解決這個問題很簡單:
1
uiview *custombackgroundview = [[uiview alloc]
2
initwithframe:
3
cgrectmake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height)];
4
custombackgroundview.backgroundcolor = [uicolor redcolor];
5
custombackgroundview.autoresizingmask = uiviewautoresizingflexibleheight | uiviewautoresizingflexiblewidth;
6
[self.view addsubview:custombackgroundview];
在這種情況下,我們就不得不把目前的根檢視的動態大小,以便將新的自定義背景檢視,在整個區域。 再舉乙個例子,讓我們假設程式設計師希望建立乙個新的檢視以程式設計方式在loadview方法:
1
- (
void
)loadview
2
uiscreen
框架將返回當前應用程式的視窗的矩形範圍,減去的狀態列占用的面積(如果可見)。您也可以得到公正的邊界矩形的螢幕
[[uiscreen mainscreen] bounds]
。這兩個值都將返回邏輯點,而不是畫素。 雖然上面的**示例是有用的,他們也受到一些限制。在實踐中,你可能需要處理更複雜的情況,包括許多子檢視動態調整大小根據裝置螢幕上的高度。 幸運的是,有至少三種不同的方法,你可以用它來這樣做。
view autoresizing
uiview的屬性autoresizingmask的是乙個簡單而有效的方法,以確保子檢視物件動態調整,相對於他們的父檢視。在上面的**片斷中,我用這個,以確保適當的寬度和高度的自定義背景的檢視物件將擴充套件方向的變化:
1
custombackgroundview.autoresizingmask = uiviewautoresizingflexibleheight | uiviewautoresizingflexiblewidth;
需要注意的是xcode/ inte***ce builder中的autoresizingmask屬性可以控制的。
裝置檢測
另一種方法是試圖通過一些檢查,如果當前裝置是在執行乙個iphone 5。我發現是最高端的版本。以下是修改後的版本中建立的巨集:
1
#define is_iphone ( [[[uidevice currentdevice] model] isequaltostring:@"iphone"] )
2
#define is_ipod ( [[[uidevice currentdevice ] model] isequaltostring:@"ipod touch"] )
3
#define is_height_gte_568 [[uiscreen mainscreen ] bounds].size.height >= 568.0f
4
#define is_iphone_5 ( is_iphone && is_height_gte_568 )
第一和第二的巨集檢查,如果當前裝置是乙個iphone或ipod touch上使用uidevice類。 第三巨集檢查看到,如果螢幕上的高度大於或等於浮點值568。回想一下上面說的[[uiscreen的mainscreen]界訊息將返回應用程式視窗的邊界框在邏輯點,568,1136畫素的邏輯點,將對映到與的預設檢視contentscalefactor的1.0。 最後,第四個巨集將兩個前巨集成is_iphone_5巨集(暫時)返回true,如果iphone5上執行的**。你可以在自己的**中使用的最終版本是這樣的:
view source
print?
1
if
(is_iphone_5)
2
5
else
6
適應iPhone5的尺寸
看這個action,假設乙個程式設計師自定義view並新增到他們的應用程式的根檢視控制器程式設計的自定義背景圖。以前寫了這個 1uiview custombackgroundview uiview alloc 2initwithframe 3cgrectmake 0.0f,0.0f,320.0f,4...
適應iphone5 螢幕拉長的辦法
用xcode4.3以下建立的程式在iphone5上執行時會有上下的黑邊,可以有以下的解決辦法 在target頁launch images retina 4 inch 裡新增一張1136 640的,就可以使得程式支援iphone5,不會出現黑邊。同時,根據螢幕的長度不同,頁面可能需要調整,需要在.m中...
iphone4s和iphone5螢幕尺寸的相容
如果我們沒有考慮到5的尺寸,我們把應用在5上跑一下會發現,上下多出來一道黑條。這就需要我們有一定的針對性。我們可以這樣 define isiphone5 uiscreen instancesrespondtoselector selector currentmode cgsizeequaltosiz...