Подтвердить что ты не робот

Могу ли я оживить изображение iOS8 LaunchScreen.xib

Вопрос:
Существуют ли способы анимации чего-либо в файле LaunchScreen.xib проекта Xcode 6, предназначенного для развертывания для iOS 8.1+?


Контекст:
Я хочу сделать простые анимации для передачи активности или служить отвлечением пользователя, пока они ждут...


<сильные > Примеры:

  • Панель загрузки
  • Индикатор активности
  • Анимированный GIF
  • Переместите UIImage по экрану.
  • Поворот изображения
4b9b3361

Ответ 1

Неа.

Запуск изображения отображается только в течение периода времени между тем, когда пользователь выбирает запуск приложения и когда ваше приложение действительно запущено. В течение этого периода ваше приложение не может предпринимать никаких действий, таких как выполнение анимации - оно еще не запущено. Запуск Image - это просто статическое изображение, которое, когда оно хорошо спроектировано, помогает пользователю создать впечатление, что ваше приложение будет готово быстро.

(Некоторые разработчики игнорируют HIG и используют стартовый образ для создания заставки, иногда с анимированной презентацией, но в тех случаях, экран запуска по-прежнему является статическим изображением, и анимация происходит после запуска приложения - это просто, что первый кадр анимации, нарисованный запущенным приложением, соответствует внешнему виду статического изображения запуска.)

Такое поведение не изменилось с помощью функции LaunchScreen.xib в iOS 8 - оно все еще появляется только до того, как ваше приложение действительно запущено, поэтому оно все еще является статическим изображением. Что дает вам функция LaunchScreen.xib - это способность адаптивно создавать образ запуска для множества различных размеров и стилей устройства без необходимости отдельно разрабатывать, визуализировать и отправлять в своем приложении различные изображения для каждого размера/ориентации и т.д.

Если ваше приложение на самом деле не готово к использованию к моменту его получения, подумайте о том, действительно ли нужно выполнять задачи "загрузки", которые вы делаете в это время, или если вы можете позволить пользователю начать делая некоторые вещи сразу и делайте больше работ по настройке в фоновом потоке или откладывайте их до тех пор, пока это не понадобится.

Ответ 2

Я не часто использую заставки, но когда я это делаю, я хочу, чтобы они открывались, как книга.

По правде говоря, я не большой поклонник экранов всплесков, и даже Apple рекомендует использовать default.png, который показывает элементы управления (без текста) приложения:

Отобразить изображение запуска, которое очень похоже на первый экран приложения. Эта практика уменьшает предполагаемое время запуска вашего приложения.

Избегайте отображения окна About или заставки. В общем, старайтесь избегать любого типа запуска, который не позволяет пользователям сразу использовать ваше приложение.

из Руководства HIG

Тем не менее, некоторые люди любят их, и в одном приложении, в частности, есть хороший заставка внедрения - Path 2.0. Когда вы открываете Path, youre приветствуется своим логотипом на красной версии текстуры льняного яблока Apple, которая анимируется, как книга (или журнал, как то, что Path считает самим собой).

Вы можете получить источник для этого проекта здесь: https://github.com/jaysonlane/OpenBook

Прежде чем мы начнем, позвольте мне предисловие к этому с отказом от ответственности: я очень новичок в анимации в Cocoa, так что несите меня. Если вы заметите ненужный или неэффективный код, оставьте комментарий, и я приправлю его.

Если вы не видели анимацию, прыгайте в магазине приложений и забираете копию, чтобы увидеть, что пытались выполнить. Ive создал по умолчанию png, который мы можем использовать умно названную Math (как, например, книгу Math, которая открывается, правда?) Вы можете скачать это здесь (сетчатка) и здесь.

Чтобы начать, позвольте мне объяснить "хитрость" за тем, что хорошо делать: собирались использовать стандартную систему всплесков по умолчанию для отображения нашего default.png. В App Delegate, как только приложение завершит запуск, мы собираемся создать UIImageView поверх нашего представления того же default.png. Ну а затем оживите, что UIImageView, чтобы вращаться открыто, чтобы показать наш взгляд.

Итак, отпустите:

Создайте новый проект, я создал один, используя единственный шаблон представления, но это будет работать с чем угодно. Идем дальше и задаем ваши default.png и [email protected] изображениям, поставляемым. Вы можете сделать это, щелкнув проект в навигационной панели слева, нажмите "Цель" и прокрутите вниз, чтобы запустить изображения:

Откройте приложение AppDelegate.m и добавьте следующий код в ваше приложение. FIFF файл или приложение didFinishLaunchingWithOptions:

//1. add the image to the front of the view...
UIImageView *splashImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[splashImage setImage: [UIImage imageNamed:@"Default"]];
[self.window addSubview:splashImage];
[self.window bringSubviewToFront:splashImage];

//2. set an anchor point on the image view so it opens from the left
splashImage.layer.anchorPoint = CGPointMake(0, 0.5);

//reset the image view frame
splashImage.frame = CGRectMake(0, 0, 320, 480);

//3. animate the open
[UIView animateWithDuration:1.0
                      delay:0.6
                    options:(UIViewAnimationCurveEaseOut)
                 animations:^{

                     splashImage.layer.transform = CATransform3DRotate(CATransform3DIdentity, -M_PI_2, 0, 1, 0);
                 } completion:^(BOOL finished){

                     //remove that imageview from the view
                     [splashImage removeFromSuperview];
                 }];

Здесь три вещи...

1) Мы создаем новый UIImageView и добавляем его в начало представления 2) Мы установили опорную точку в левой части изображения, чтобы открыть ее слева, а затем reset кадр в полный размер представления 3) Мы анимируем UIImageView и удалим его из представления по завершении

Вот оно, это просто.

Источник: http://jaysonlane.net/tech-blog/2012/03/path-2-0-style-animated-splash-screen-default-png/

Ответ 3

Вы можете создать LaunchScreen.xib, а затем создать идеальную реплику, на которую можно поместить код, и иметь класс вроде LaunchScreenAnimator, который вы можете вызвать из своего делегата, и у него есть делегат, чтобы рассказать вам, когда анимация завершена.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    LaunchScreenAnimator *la=[LaunchScreenAnimator createWithDelegate:self];
    self.window.rootViewController=la;
    [self.window makeKeyAndVisible];

    [la startAnimation];

    return YES;
}

-(void) splashAnimationFinished:(LaunchScreenAnimator*)view
{
    [self startWithDashboardWindow]; // replace the current rootViewController with whatever you want
}