Вопрос

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

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.1];
[self presentModalViewController:settings animated:YES];
[UIView commitAnimations];

К сожалению, это не работает.Если вы скажете animated:НЕТ, это работает лучше, но базовый вид холста для рисования немедленно удаляется (поскольку контроллер считает, что он больше не виден), и поэтому анимация выполняется на белом фоне.

Делал ли кто-нибудь это раньше, кто был бы готов дать какой-нибудь совет?Я был бы вам очень признателен!

Это было полезно?

Решение

Задается аналогичный вопрос здесь.

Вы также можете изменить скорость, используя эту технику, но в моем эксперименте это делается на пустом фоне, как вы и предлагали.

Другие советы

Отредактированный:добавлена еще одна опция с локализацией контроллера для iOS 5 и более поздних версий.

Другое решение состоит в том, чтобы задать временной интервал слоя.

Это делается с помощью свойства speed CALayer.Чтобы замедлить анимацию, можно было бы использовать:

MytransparentVCViewController *vc = [[MytransparentVCViewController alloc] initWithNibName:@"MytransparentVCViewController" bundle:nil];
// Makes all animations 10 times slower
// To speed it up, set it to multiples of 1: 2 is 2 times faster, 3 is 3 times faster etc
vc.view.layer.speed = 0.1; 
[self presentModalViewController:vc animated:YES];

Обратите внимание, что предлагаемое решение в связанном сообщении не будет работать, если вашей целью является изменение скорости анимации контроллера модального представления, который вы собираетесь представить (например, если вы используете UIModalTransitionStyleCoverVertical).

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

Еще один вариант - использовать сдерживание контроллера просмотра.(Только для iOS 5 и более поздних версий)

http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW81.

У вас есть полный контроль над анимацией с помощью UIViewController transitionFromViewController:toiewcontroller:продолжительность: параметры:анимация:завершение:.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top