2012-01-10 8 views
1

私は検索して検索したが、CoreAnimationを使用してカスタムクラスのオブジェクトのプロパティやサードパーティのフレームワークのプロパティをアニメーション化する方法を見つけることができませんでした。誰かがその光景を見せてくれますか?任意のオブジェクトとプロパティの非CALayerアニメーションフレーム

私の特定の使用例は、各描画でOpenGLユニフォームとして渡されるプロパティをアニメートすることです。私が発見した

+0

カスタムサブクラスは何ですか?どのプロパティを正確にアニメートしたいですか? "OpenGL uniform"とはどういう意味ですか?どうしてCALayer?それはUIView/CALayerのプロパティをアニメーション化する方法です。 – bshirley

+0

混乱して申し訳ありません。あなたの質問に答える:NSObjectのサブクラス。私が作成した任意のプロパティ。 OpenGLES 2 glUniform1f()で描画する前に設定したGLSLシェーダ一様変数。 CALayerサブクラスでカスタムプロパティをアニメートできますか?それにもかかわらず、デリゲートを介して一般的なGLKViewを制御しているので、面倒なリファクタリングを行わない限り、レイヤに新しいプロパティを作成する手段はありません。私は[ANAnimationClass animiationWithObject:someObject forKeyPath: "someproperty" startValue/timingFunctionなど]の行に沿ってAPIを構想しています。 –

+0

"CALayerサブクラスでカスタムプロパティをアニメートできますか?確かに。これは、CALayerの構築方法の主な利点の1つです。 (私の説明はここにある:http://www.apeth.com/iOSBook/ch17.html#_making_a_property_animatableを参照してください)しかし、それは私が全くしていない性質のために行うことができるということを意味するものではありませんわかる。 – matt

答えて

0

二細かいオプション:

PRTween:https://github.com/domhofmann/PRTween

POP(Facebookから):https://github.com/facebook/pop

PRTweenがシンプルに勝利...

[PRTween tween:someObject property:@"myProp" from:1 to:0 duration:3];

POPには、FBペーパーアプリ用に開発された興味深いアニメーションカーブがあります。カスタム小道具のためにもう少し畳み込まれていますが、それ以上の柔軟性を提供します:

POPSpringAnimation *anim = [POPSpringAnimation animation];  
prop = [POPAnimatableProperty propertyWithName:@"com.foo.radio.volume" initializer:^(POPMutableAnimatableProperty *prop) { 
    // read value 
    prop.readBlock = ^(id obj, CGFloat values[]) { 
    values[0] = [obj volume]; 
    }; 
    // write value 
    prop.writeBlock = ^(id obj, const CGFloat values[]) { 
    [obj setVolume:values[0]]; 
    }; 
    // dynamics threshold 
    prop.threshold = 0.01; 
}]; 

anim.property = prop; 
関連する問題