16

Apple が CATransaction の代わりにブロックベースのアニメーションを使用することを推奨していることを読んでいます。

以前は、次のコードを使用してアニメーションを無効にしていました。

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

これを行うための新しい推奨方法はありますか、それともまだ大丈夫ですか?

4

5 に答える 5

34
[UIView setAnimationsEnabled:NO];
//animate here
[UIView setAnimationsEnabled:YES];
于 2011-03-26T16:50:09.493 に答える
25

iOS 7 以降の場合、これは次の方法で実現できます。

[UIView performWithoutAnimation:^{
    // Changes we don't want animated here
    view.alpha = 0.0;
}];
于 2014-07-03T14:24:14.513 に答える
8

スイフト 3+

UIView.performWithoutAnimation {
            // Update UI that you don't want to animate
        }
于 2018-02-19T09:45:58.840 に答える
3

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();
于 2012-07-27T22:43:39.170 に答える