Я использую каталог активов Xcode 5, и я хотел бы использовать мой LaunchImage
в качестве фонового изображения моего домашнего представления (довольно распространенная практика, позволяющая сделать переход от «загрузки» к «загруженному» более плавным).
Я хотел бы использовать одну и ту же запись в каталоге активов для экономии места и не дублировать изображение в двух разных наборах изображений.
Однако звонки:
UIImage *image = [UIImage imageNamed:@"LaunchImage"]; //returns nil
источник
UIInterfaceOrientationIsLandscape()
Вместо этого используйте .LaunchImages особенные и на самом деле не являются каталогом активов на устройстве. Если вы посмотрите с помощью iFunBox / iExplorer / etc (или на симуляторе, или в каталоге сборки), вы можете увидеть окончательные имена, а затем написать код для их использования - например. для проекта только для iPhone, предназначенного только для iOS7, это установит правильное изображение для запуска:
Я поместил это в viewDidLoad.
Это не совсем идеально, было бы здорово, если бы Apple предоставила нам хороший API для этого.
источник
В настоящее время мое приложение поддерживает только iOS 7 и новее.
Вот как я ссылаюсь на изображение запуска из каталога активов:
Вы можете добавить больше пар ключ-значение, если хотите поддерживать более старые версии iOS.
источник
UIScreen.mainScreen.bounds
все зависит от текущей ориентации интерфейса. См stackoverflow.com/a/24153540/158525Здесь категория на UIImage, основанная на решении, предоставленном Черпаком Евгением выше.
UIImage + SplashImage.h :
UIImage + SplashImage.m :
источник
Ответ @ codeman обновлен для Swift 1.2:
Чтобы вызвать это и поддержать ротацию для iOS 8:
Как раз то, что мне нужно, спасибо!
источник
Я просто написал общий метод получения имени заставки для iPhone и iPad (пейзаж, портрет). У меня это сработало, надеюсь, это поможет и вам. Я написал это с помощью других ответов SO, спасибо @Pichirichi за весь список.
Другие служебные методы:
источник
[screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace]
но сделайте Обязательно сначала проверьте, используете ли вы iOS 8, иначе произойдет сбой.Быстрая версия ответа Черпака Евгения:
источник
После ответа @Pichirich я сослался на свое изображение запуска в InterfaceBuilder как:
"LaunchImage.png"
... а с Xcode 5.0.2 он автоматически извлекает соответствующий образ прямо из каталога активов.
Это то, что я ожидал - за исключением злобно мерзкого шага Apple, который молча переименовал "Default.png" в "LaunchImage.png" :)
источник
nil
после данной инициализацииВ документации четко указано:
"У каждого набора в каталоге ресурсов есть имя . Вы можете использовать это имя для программной загрузки любого отдельного изображения, содержащегося в наборе. Чтобы загрузить изображение, вызовите метод UIImage: ImageNamed:, передав имя набора, который содержит изображение . "
Использование списка Пичиричи помогает разрешить это несоответствие.
источник
UIImageView *myView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LaunchImage"]];
Отлично работает![UIImage imageNamed:..]
узнать, какой выбрать?Получить доступ к изображению запуска можно с помощью одной строчки кода.
Пожалуйста, следуйте инструкциям ниже, чтобы достичь функциональности, описанной выше.
Шаг 1. Расширить
UIImage
класс, создав категорию и добавив к ней следующий метод.Шаг 2. Вышеуказанный метод должен работать, добавляя следующий код также в ту же категорию
UIImage
источник
Я понимаю, что это не обязательно лучшее решение для всех, но самый простой (и наименее подверженный ошибкам, IMHO) способ сделать это - сделать отдельную запись в вашем каталоге Images.xcassets. Я назвал это
SplashImage
.Когда вы собираетесь добавить новую запись, убедитесь, что не выбрали вариант «Новое изображение для запуска». Вместо этого выберите общий «Новый набор изображений». Затем откройте инспектор и выберите соответствующие параметры. Если вы строите только устройства Retina, как я, вы можете выбрать следующее:
У вас останется четыре записи (iPhone 4S, iPhone 5 (s, c), iPhone 6 и iPhone 6 Plus).
Файлы, соответствующие изображениям, следующие:
Конечно, после того, как вы это сделаете, вы можете просто использовать
[UIImage imageNamed:@"SplashImage"]
источник
С помощью ответа Пичиричи я реализовал следующую категорию (iOS 7+): UIImage + AssetLaunchImage
На самом деле это немного больше, чем создание имени на лету, но, вероятно, будет полезно.
источник
Обновлен до последней версии синтаксиса Swift (Swift 5)
источник