Xcode 7, soporte de imágenes de background de dispositivo universal de catálogo de activos?

He visto varias publicaciones anteriores sobre el tamaño de las imágenes, pero no puedo encontrar nada actualizado o incluso saber si es posible con solo el catálogo de activos para proporcionar imágenes para todos los tamaños de pantalla de iPad y iPhone.

Esta es la mejor publicación que he encontrado, pero en Xcode 7 no muestra "Retina 4 2x" o el iPhone 6 / 6+

Xcode 6: xcassets para compatibilidad con imágenes universales

En xcode 7 hay una opción universal, pero las tres imágenes no son compatibles con todos los tamaños de dispositivo.

He visto opciones en las que puedes proporcionar tus propias imágenes fuera del catálogo de activos, pero realmente me gustaría usar el catálogo de activos.

¿Cómo usar xcassets / imágenes de background universales para diferentes iPhones / iPads?

EDIT: Parece que podría tener que ir a la ruta del catálogo de ningún activo 🙁

UN)

Me gustaría probar a futuro esta solución, por lo que recae y, si es necesario, cambie el tamaño de la image más adecuada, ya que no estoy seguro de que sucederá.

NSNumber *screenWidth = @([UIScreen mainScreen].bounds.size.width); NSString *imageName = [NSString stringWithFormat:@"name-%@w", screenWidth]; UIImage *image = [UIImage imageNamed:imageName]; 

SEGUNDO)

O tal vez este código es mejor? Aunque no estoy seguro de a qué tamaños se refiere, también está un poco desactualizado, ya que no admite imágenes x3.

 #import <UIKit/UIKit.h> @interface UIImage (DefaultImage) // uses statusbar orientation + (UIImage *)defaultImage; //uses given orientation + (UIImage *)defaultImageForOrientation:(UIInterfaceOrientation)orient; @end 

 @implementation UIImage (DefaultImage) + (UIImage *)defaultImage { return [self defaultImageForOrientation:[[UIApplication shanetworkingApplication] statusBarOrientation]]; } + (UIImage *)defaultImageForOrientation:(UIInterfaceOrientation)orient { // choose the correct launch image for orientation, device and scale NSMutableString *launchImageName = [[NSMutableString alloc] initWithString:@"Default"]; BOOL isPad = ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ); if ( isPad ) { BOOL isLandscape = UIInterfaceOrientationIsLandscape(orient); NSString *imageOrientation = (isLandscape) ? @"Landscape" : @"Portrait"; BOOL isRetina = ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0); NSString *scaleString = (isRetina) ? @"@2x" : @""; // Default-Landscape~ipad.png // Default-Landscape@2x~ipad.png // Default-Portrait~ipad.png // Default-Portrait@2x~ipad.png launchImageName = [NSMutableString stringWithFormat:@"%@-%@%@.png", launchImageName, imageOrientation, scaleString]; } else { if ( CGRectGetHeight([UIScreen mainScreen].bounds) > 480.f) { // Default-568h.png launchImageName = [NSMutableString stringWithFormat:@"%@-568h.png", launchImageName]; } else { // Default.png // Default@2x.png launchImageName = [NSMutableString stringWithFormat:@"%@.png", launchImageName]; } } return [UIImage imageNamed:launchImageName]; } @end 

Descargo de responsabilidad: tomado de https://github.com/Daij-Djan/DDUtils

DO)

Esto también se ve bien, pero es re-dimensionar y no usar imágenes nítidas reales y no hay retroceso.

https://gist.github.com/kevindelord/fe2e691d06ab745fbb00

 NSString *extension = @""; // iPhone 3GS and earlier if (scale == 3.f) { extension = @"@3x"; // iPhone 6 Plus } else if (scale == 2.f && h == 568.0f && w == 320.0f) { extension = @"-568h@2x"; // iPhone 5, 5S, 5C } else if (scale == 2.f && h == 667.0f && w == 375.0f) { extension = @"-667h@2x"; // iPhone 6 } else if (scale == 2.f && h == 480.0f && w == 320.0f) { extension = @"@2x"; // iPhone 4, 4S } else if (scale == 1.f && h == 1024.0f && w == 768.0f) { extension = @"-512h"; // iPad Mini, iPad 2, iPad 1 } else if (scale == 2.f && h == 1024.0f && w == 768.0f) { extension = @"-1024h@2x"; // iPad Mini 3, iPad Mini 2, iPad Air, iPad Air 2 } return extension; 

Acabo de modificar el file Contents.json y agregué Retina 4 2x:

 { "idiom" : "iphone", "filename" : "home-bgimage-iphone5@2x.png", "subtype" : "retina4", "scale" : "2x" } 

Y la Retina 4 2x apareció en el catálogo de activos para ese set de imágenes 🙂

Para proporcionar diferentes imágenes para iPhone y iPad, solo necesita seleccionar las casillas de verificación de iPhone y iPad en la sección Dispositivos y anular la selección de Universal.

Sin embargo, todavía no sé cómo manejar el iPhone 6. Siempre tuve una image diferente configurada para iPhone 6 con una sola image y comprobé el código si el dispositivo es un iPhone6 ​​o iPhone6 ​​Simulator y configuré esa image.