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

Почему анимация iOS медленна при первом запуске?

Мне кажется, что в первый раз, когда я запускаю анимацию (анимацию кадра UIView или позицию CALayer и т.д.), это довольно прерывисто, а последующие анимации являются гладкими.

Что бы это вызвало, и есть ли способ предварительно кэшировать анимацию?

Примечание: этот вопрос очень похож на этот: Запуск анимации UIImageView при первом запуске, но UIImages не используются в моих анимациях.

4b9b3361

Ответ 1

Предполагая, что вы используете [UIImage imageNamed: @"herp.png"], изображение будет кэшироваться. Если изображение нарисовано много, оно будет распаковано в память, иначе оно будет делать ленивую нагрузку изображения и вызвать заикание.

Ответ 2

Если у вас есть TextField, который я предполагаю, это то, что получает ваш пользовательский ввод. Используйте методы UITextFieldDelegate Did, а не Should

- (void)textFieldDidBeginEditing:(UITextField *)textField
{  
//Do textfield animations and other view animations here

}

Не выполняйте анимацию;

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{  
//Don't do textfield animations and other view animations here  
//This is where the system does its own animations; raising the keyboard, etc  
}

Ответ 3

Запустите его в viewDidAppear вместо viewWillAppear. Кэширование должно происходить после появления изображения, и оно должно выглядеть одинаково для пользователя.