ios - 移動 - uiview アニメーション 繰り返し




どのようにCALayerを(アニメーションなしで)即座に動かすのですか? (3)

スウィフト3エクステンション:

extension CALayer {
    class func performWithoutAnimation(_ actionsWithoutAnimation: () -> Void){
        CATransaction.begin()
        CATransaction.setValue(true, forKey: kCATransactionDisableActions)
        actionsWithoutAnimation()
        CATransaction.commit()
    }
}

使用法 :

CALayer.performWithoutAnimation(){
    someLayer.position = newPosition
}

私はiOSアプリでCALayerをドラッグしようとしています。

ポジションプロパティを変更するとすぐに、新しいポジションにアニメートして、その場所全体でちらつきます。

layer.position = CGPointMake(x, y)

CALayersを即座に移動するにはどうしたらいいですか? 私はCore Animation APIの周りに頭を浮かべているようには見えません。


他の人が示唆しているように、あなたはCATransactionを使うことができます。
この問題は、CALayerの既定の暗黙的なアニメーションの継続時間が0.25秒であるために発生します。

したがって、 setDisableActions代わりに、 setAnimationDuration0.0値で使用する方が簡単です(私の意見では)。

[CATransaction begin];
[CATransaction setAnimationDuration:0.0];
layer.position = CGPointMake(x, y);
[CATransaction commit];

次のようにコールを折り返したいとします。

[CATransaction begin]; 
[CATransaction setValue: (id) kCFBooleanTrue forKey: kCATransactionDisableActions];
layer.position = CGPointMake(x, y);
[CATransaction commit];




core-animation