2014-10-06 6 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?

Это неудобно и не круто. Увидев, что Xcode обслуживает все разные размеры устройства для их актива LaunchImage, я надеялся, что есть какой-то способ предоставить устройства для активов без запуска изображений без использования кода.

+0

возможно дубликат [Xcode 6 конкретного устройства актива Каталог] (http://stackoverflow.com/questions/25954706/xcode-6-device-specific-asset-catalog) –

ответ

0

Использование существующего проекта при переходе на Xcode 6 и iOS 8 создает некоторые исходные проблемы. Я решил это, изменив изображение с Device specific на Universal. Это удалит параметр изображения R4 и оставит вас с @1x, @2x и @3x. Если вы используете, например, фон изображение, которое должно соответствовать экрану, тогда я порекомендую вам найти изображение, которое не должно соответствовать 100% идеально подходит, чтобы выглядеть хорошо, и установить изображение, которое будет отображаться как Aspect Fill.

2

Я сообщил об ошибке Apple об этом с середины ноября 2014 года, и я только заметил, что они отметили его как «Нет ценности» ..., что дает мне впечатление, что Apple специально не выпустила дополнительный слот для iPhone 6. Я предполагаю, что теперь они хотят, чтобы слот 2x использовался для iPhone 6, и, возможно, они уменьшают поддержку iPhone 4, поскольку он стареет.

Если вы действительно хотите сохранить поддержку IPhone 4S, я предлагаю использовать iPhone 6 размера изображения в слоте 2 раза, а затем использовать следующий метод для загрузки изображений:

+(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) не теряет много качества, даже если аспектный рацион не то же самое.

0

У меня есть same problem и получил подтверждение от яблока, что я должен написать для этого код. Например, вы можете попробовать, как этот Fullscreen images on iPhone 6 with Asset Catalogs

Но я на самом деле пошел ленивый об этом, используя один 2x для 4" & 4.7" экран и другой 2x 3,5" экран

 Смежные вопросы

  • Нет связанных вопросов^_^