2014-10-06 117 views
2

Xcode爲1x,2x,4「2x和3x資產提供資產桶。我的全屏資產在這種配置下都很順利,因爲2x存儲桶用於3.5英寸和4.7英寸的屏幕。目前我有一個反映當前屏幕尺寸的UIImage類別,如果設備看起來是3.5英寸,則選擇「* -3.5」資產。Xcode資產目錄支持3.5英寸,4英寸和4.7英寸@ 2x圖像?

這是笨重的,而且不酷。設備尺寸爲他們的LaunchImage資產,我希望有一種方式來提供非啓動圖像資產的設備特定資產,而不訴諸代碼。

+0

可能重複目錄(http://stackoverflow.com/questions/25954706/xcode-6-device-specific-asset-catalog) – 2014-10-06 16:19:35

回答

0

移動到Xcode 6和iOS 8時使用現有的項目會產生一些初始問題。我通過改變圖像從Device specific設置Universal解決了這個。這將刪除R4圖像選項,給你留下@1x@2x@3x。如果使用例如背景需要適合屏幕的圖像,然後我會建議您找到一張不必完全適合看起來很好的圖像,並將圖像設置爲顯示爲Aspect Fill

2

我已經向蘋果這個錯誤自十一月中旬2014年我只注意到他們將其標記爲沒有價值......這給我的印象蘋果已經省略了故意iPhone 6的額外插槽。我的猜測是他們現在希望將2個插槽用於iPhone 6,也許他們正在減少對iPhone 4s的支持,因爲它正在變老。

如果你真的想繼續支持iPhone 4S,我建議在2個插槽使用iPhone 6大小的圖像,然後用下面的方法來加載圖片:

+(UIImage *)loadImageNamed:(NSString *)imageName 
{ 
    CGSize screenSize = [UIScreen mainScreen].bounds.size; 
    CGFloat screenHeight = MAX(screenSize.width, screenSize.height); 
    CGFloat const IPHONE_4_SCREEN_HEIGHT = 480; 
    UIImage *image = [UIImage imageNamed:imageName]; 
    if(screenHeight == IPHONE_4_SCREEN_HEIGHT) { 
     CGFloat const xScale = .85333333;//x conversion ratio from iPhone 6's 375 pts width screen to iPhone 4's 320 pts width screen 
     CGFloat const yScale = .71964018;//y conversion ratio from iPhone 6's 667 pts height screen to iPhone 4's 480 pts height screen 
     CGSize newSize = CGSizeMake(xScale * image.size.width, yScale * image.size.height); 
     UIGraphicsBeginImageContextWithOptions(newSize, NO, 0); 

     [image drawInRect:(CGRect){0, 0, newSize}]; 
     UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     return resizedImage; 
    } 
    return image; 
} 

重定即使長寬比不一樣,大圖像(iPhone 6)和較小圖像(iPhone 4)也不會損失太多質量。