天天看點

iOS 640*1136分辨率程式設計小結

因為iPhone5 的新分辨率,最近大家都忙着在更新應用以支援新的分辨率,雖然新版的xcode4.5 可以直接在xib裡面建立 4寸屏的view,但實際上它卻沒那麼智能,它支援4寸屏了,但拉出的控件即便是在4寸螢幕的環境下它的frame值仍然是以4寸螢幕為基礎的,也就是說如果你的view的frame 為 (0,0,320,548),設定了高度寬度适應,它在3.5寸螢幕環境運作的時候這個view的值仍然是(0,0.320,548),就算它的值看起來在3.5寸下完全顯示,但請不要被它的假像所蒙騙了.

有可能你覺得這個值沒什麼關系,當然,如果你的所有控件都是通過xib拉出來的,那沒什麼.但很多時候情況并不是那麼簡單,有時你要将一個view通過代碼放在一個你想要的位置,那時候你就需要它的坐标了.在以前,你可以把它寫死,因為以前是統一分辨率,但現在不同了.不同分辨率下控件的坐标和大小要進行調整.

本人雖然曾經做過android的開發,但是對多分辨率的處理卻不是很在行,想了幾種方案,覺得最友善的是以下這種.

在controller的viewDidLoad 或者 loadView方法中設定 self.view.frame 

//适應螢幕分辨率
CGRect frame = self.view.frame;
frame.size.height = [UIScreen mainScreen].bounds.size.height - 20;
self.view.frame = frame;      

 因為在目前界面是帶有狀态欄,是以在高度那裡減去20 ,如果是帶有導覽列的,就再減去44,如果帶有tabbar的,就減去48

在此方法設定之後,controller 的  view.frame就是實際當中的大小,也就是說它的值是準确的,那接下來加入其他view的時候一切的計算都将會變得簡單很多.

比如建立一個tableView,上邊距為20,下邊距20

UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 20, 320, self.view.frame.size.height - 40) style:UITableViewStylePlain];
    [self.view addSubview:tableView];      

效果如下:

4寸螢幕 3.5寸屏

iOS 640*1136分辨率程式設計小結
iOS 640*1136分辨率程式設計小結

代碼放在附件中,如果哪位朋友有更好解決辦法的話,希望可以多多交流. 

  • iOS 640*1136分辨率程式設計小結
  • 大小: 55.3 KB
  • iOS 640*1136分辨率程式設計小結
  • 大小: 53.4 KB
  • HelloIOS6.zip (34.4 KB)
  • 下載下傳次數: 4
  • 檢視圖檔附件