適配4inch(未完)

1. 項目中加個1136*640的啓動頁面圖片,命名 [email protected]

2. ios模擬器硬件->設備->iPhone(Retina 4-inch)

3. 動態更改控件佈局和高度[UIScreen mainScreen].bounds.size.height


代碼中不要寫320和480什麼的初始化座標,要用屏幕高度和寬度初始化


#define Screen_height   [[UIScreen mainScreen] bounds].size.height
#define Screen_width    [[UIScreen mainScreen] bounds].size.width

CGRect screenBounds = [ [UIScreenmainScreen]bounds];

screenBounds.origin.y = 0

screenBounds.size.height = 480

CGRect viewFrame = [[UIScreenmainScreen]applicationFrame];

viewFrame.origin.y = 20

viewFrame.size.height = 460


例如:
如果想實現一個UILabel控件始終位於:距離屏幕下邊緣140高的位置,則不能這樣寫:
    lblMsg = [[UILabel alloc] initWithFrame:CGRectMake(150,  320, 150, 30)];
這樣是不行的,因爲它的Y值已經固定了,所以它的位置不會隨屏幕的拉伸而改變。如果在4寸屏的時候,它就會位於屏幕中間的位置了,而不是下方。


解決辦法:可以使用
    lblMsg = [[UILabel alloc] initWithFrame:CGRectMake(150,  [UIScreen mainScreen].bounds.size.height - 140, 150, 30)];
這種情況下,UILabel的Y值是相對於屏幕尺寸而變化的,所以就實現了在3.5寸屏和4寸屏下,始終都位於距離屏幕底部 140高的位置上。 


修改程序界面,應儘量獲取當前屏幕的size,而不是寫死的值(儘量不要寫死480,而根據當前屏幕[UIScreen mainScreen].bounds)選擇能在分辨率改變時省去不少麻煩
判斷設備是不是iPhone 5 iPod 5
#define IS_IPHONE_5 (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568)<DBL_EPSILON) 


同樣,對於控件的高度等,也是需要相對定位的,不能寫死。這樣就實現了兼容


stackoverflow上代碼,如何判斷iphone 5

[html] view plaincopy
  1. #define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )  

如果要兼任ipad

[html] view plaincopy
  1. <p class="p1">#define IS_WIDESCREEN ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )<span class="s1">568</span> ) < DBL_EPSILON )</p><p class="p1">#define IS_IPHONE ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @<span class="s2">"iPhone"</span> ] )</p><p class="p1">#define IS_IPHONE_SIMULATOR ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @<span class="s2">"iPhone Simulator"</span> ] )</p><p class="p1">#define IS_IPOD   ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @<span class="s2">"iPod touch"</span> ] )</p><p class="p1">#define IS_IPHONE_5 ( ((IS_IPHONE) || (IS_IPHONE_SIMULATOR)) && IS_WIDESCREEN )</p>  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章