Явное отключение анимации UIView в iOS4 +

Я читал, что Apple рекомендует использовать блочные анимации вместо CATransaction

Раньше я использовал этот код для отключения анимации:

[CATransaction begin];
[CATransaction setDisableActions: YES];
// !!! resize
[CATransaction commit];

Есть ли новый рекомендованный метод для этого, или это все еще хорошо?

Ответ 1

[UIView setAnimationsEnabled:NO];
//animate here
[UIView setAnimationsEnabled:YES];

Ответ 2

Для iOS 7 и выше это теперь можно выполнить с помощью

[UIView performWithoutAnimation:^{
    // Changes we don't want animated here
    view.alpha = 0.0;
}];

Ответ 3

Для пользователей 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();

Ответ 4

Swift 3 +

UIView.performWithoutAnimation {
            // Update UI that you don't want to animate
        }