2012-10-05 68 views
3

以前在此處發佈的關於遷移到iPhone 5的帖子中,只提到了添加新尺寸的啓動圖像* ,如果需要的話可以使用AutoLayout。爲iPhone5與iPhone4處理xib中不同大小的圖像?

但我有幾個xibs,其中有一個填充整個屏幕的背景圖像(也許根據視圖縮小導航和選項卡欄)。爲了支持iPhone 5,我現在需要針對不同屏幕大小的不同圖像,這是如何在xib或其他地方處理的?

(*順便說一下你會怎麼做,如果應用程序不使用啓動圖像?)

回答

3

Here's一個鏈接,實際上將幫助你。保存啓動圖像,如果您在文件名的末尾添加「[email protected]」,iOS不會自動選擇正確的圖像。在above link中提到了一些幫助方法,可以使您的工作變得簡單。

我已經在我上面,在這裏提到的鏈接採用的代碼是爲對象 - 輔助功能:

-(BOOL) IsTall 
{ 
    return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) && ([[UIScreen mainScreen] bounds].size.height * [[UIScreen mainScreen] scale] >= 1136); 
} 

小類別的寫作,將有助於太。

@interface NSString (Special) 
-(NSString*)correctImageNameForiPhone5 
@end 

@implementation NSString (Special) 
-(NSString*)correctImageNameForiPhone5 
{ 
    if([self isTall]) 
      return [email protected]_-; //Do the correct NSString magic here 
    else 
      return -originalImageName-; 
} 
@end 

最後,當您正在訪問的UIImage對象:

NSString *filename = @"backgroundImage.png"; 
UIImage *img = [UIImage imageNamed:[filename correctImageNameForiPhone5]]; 

這裏的假設是,你將不得不與「-568h @ 2X」結束所有的iPhone5專用的圖像文件名。如果你把它放到你的項目中,這個代碼示例肯定不會工作,但你明白了。它需要一些NSString修復程序。

+1

這是以編程方式進行的,所以帶有背景的xibs不能再使用? – Gruntcakes

+0

如果iOS無法處理基於命名約定的自動調整大小,我沒有看到任何其他選項。雖然我很想知道是否有出路! – Ravi

+0

還有另一種方法來以編程方式處理較高的圖像。 https://github.com/gaj/imageNamed568 – UIBuilder