iOS iphone5屏幕適配 autosizing

轉自:http://blog.sina.com.cn/s/blog_a843a8850101jxhh.htmlhtml

 

iphone5出來了,從不用適配的咱們也要像android同樣適配不一樣分辨率的屏幕了。android

 
公司產品新版本須要適配iphone5,通過一番折騰算是搞定了。下面分享給你們:
 
iphone5的屏幕分辨率:1136 x 640 也便是高度變成了568,程序啓動時咱們須要一張retina圖片命名爲Default-568h@2x.png。在咱們建立工程時xcode會默認爲咱們建立一個純黑色的圖片替換便可。
 
最新版的xcode都已支持iphone5調試:選中模擬器---->設備---->iphone(Retina 4-inch),稍等片刻就能夠切換到iphone5模擬器。
 
要適配iphone5須要將view的autosizing設置爲以下狀態:
 
 
/
 
固然還要確認選中另外一項
 
 
/
 
這一項默認會選中的,意思是自動縮放子視圖。
 
若是咱們的view沒有使用xib那咱們能夠使用代碼設置這些屬性:
 
 
[cpp] 
self.view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin   
| UIViewAutoresizingFlexibleRightMargin |  UIViewAutoresizingFlexibleBottomMargin    
| UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;  
 
self.view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin 
| UIViewAutoresizingFlexibleRightMargin |  UIViewAutoresizingFlexibleBottomMargin  
| UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;接下來設置子視圖(好比button,image等):
 
/
 
 
 
 
對應代碼:
 
[cpp] 
autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;  
 
.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
意思是將控件縮放時與父視圖左邊和頂部對應。能夠根據具體須要設置子控件的autorizingMask相應值。
 
咱們還能夠經過代碼手動改變iphone5下控件的大小或位置:
首先斷定一下設備是否爲iphone5:
 
 
 
[cpp] 
#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)   
 
#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568) 接着咱們能夠在view初始化的時候改變frame:
 
 
[cpp] 
if (DEVICE_IS_IPHONE5) {  
        [botton setFrame:CGRectMake(0, 450, 320, 440)];  
}  
 
if (DEVICE_IS_IPHONE5) {
        [botton setFrame:CGRectMake(0, 450, 320, 440)];
}

 

原文:http://blog.csdn.net/linzhiji/article/details/8000048ios

 今天apple發佈ios6, 也許很快就能見到iphone 5的手機。不過如今只能從模擬器上來測試程序。xcode

 

     如何開發或者適配iphone5 4英寸的屏幕app

 

1.安裝xcode 4.5,選擇Retina(4-inch)啓動畫面,iphone

2. 添加啓動圖片, Default-568h@2x.png, 分辨率640 * 1136 pixels, 若是不增長會以下:oop

 

 


3.在編碼時,儘可能不要寫死480,根據屏當前屏幕([UIScreen mainScreen].bounds)選擇size能在分辨率改變時省去很多麻煩。 
測試

stackoverflow上代碼,如何判斷iphone 5動畫

 

[html]  view plain copy
 
  1. #define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) <</span> DBL_EPSILON )  

 

若是要兼任ipad編碼

 

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


 

而後每一個界面判斷是否iphone5來慢慢的調整。這個有純粹代碼寫ipad和iphone的universal版經驗的,就能理解多一些。


4. (這個是其餘地方拷貝來的) MainWindow.xib文件,在Simulated Metrics中設置window的size爲Retina 4 Full Screen;再建立一個3.5寸的UIWindow用於原來的屏幕,同時在appDelegate中建立對應的成員。在app啓動時將建立兩個window,根據當前屏幕尺寸來決定用哪一個window,將另外一個隱藏。 
或者launch app的時候手動建立window,而不要用工程創建時自動建立的MainWindow.xib。手動建立main window時注意修改相關默認生成的配置文件,不然若xib文件刪除而app還嘗試加載會致使閃退,刪除plist文件中NSMainNibFile字段。 

 

 

5.另一篇文章:

http://blog.csdn.net/linzhiji/article/details/8000125

相關文章
相關標籤/搜索