Ответ 1
[UIView setAnimationsEnabled:NO];
//animate here
[UIView setAnimationsEnabled:YES];
Я читал, что Apple рекомендует использовать блочные анимации вместо CATransaction
Раньше я использовал этот код для отключения анимации:
[CATransaction begin];
[CATransaction setDisableActions: YES];
// !!! resize
[CATransaction commit];
Есть ли новый рекомендованный метод для этого, или это все еще хорошо?
[UIView setAnimationsEnabled:NO];
//animate here
[UIView setAnimationsEnabled:YES];
Для iOS 7 и выше это теперь можно выполнить с помощью
[UIView performWithoutAnimation:^{
// Changes we don't want animated here
view.alpha = 0.0;
}];
Для пользователей MonoTouch (С#) это вспомогательный класс:
public class UIViewAnimations : IDisposable
{
public UIViewAnimations(bool enabled)
{
_wasEnabled = UIView.AnimationsEnabled;
UIView.AnimationsEnabled = enabled;
}
public void Dispose()
{
UIView.AnimationsEnabled = _wasEnabled;
}
bool _wasEnabled;
}
Пример:
using (new UIViewAnimations(false))
imageView.Frame = GetImageFrame();
Swift 3 +
UIView.performWithoutAnimation {
// Update UI that you don't want to animate
}