Явное отключение анимации UIView в iOS4+
Я читал, что Apple рекомендует использовать анимацию на основе блоков вместо CATransaction
раньше я использовал этот код для отключения анимации:
[CATransaction begin];
[CATransaction setDisableActions: YES];
// !!! resize
[CATransaction commit];
есть ли новый рекомендуемый метод для этого, или это все еще нормально?
5 ответов
для iOS 7 и выше это теперь можно выполнить с помощью:
[UIView performWithoutAnimation:^{
// Changes we don't want animated here
view.alpha = 0.0;
}];
для пользователей MonoTouch (C#) вот вспомогательный класс:
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();
// Disable animations
UIView.setAnimationsEnabled(false)
// ...
// VIEW CODE YOU DON'T WANT TO ANIMATE HERE
// ...
// Force view(s) to layout
yourView(s).layoutIfNeeded()
// Enable animations
UIView.setAnimationsEnabled(true)