MVC/OOPデザインパターンでは、プロパティを設定しないと、オブジェクトにのプロパティを設定するよう依頼されます。同様に、ココアでは、オブジェクトを描画するときにオブジェクトを指示しません。あなたのオブジェクトのコードでは、それ自体が描画される方法を詳述しているので、を(ほとんどの場合)描画すると決定するフレームワークを信頼しています。MVC/OOPパターンへのCocoaアニメーションの適用
しかし、ココア(特にCocoa-Touch)のアニメーションに関しては、オブジェクトビューコントローラ内からオブジェクトを引き出すときは、今度はを制御する必要があるようです。 UIViewサブクラスに値を変更するようメッセージを送信してから、それをゆっくりと持続させる(duration = X)プロパティに応じて自身を新しい位置、アルファ、回転などにアニメートする変更。または私はできますか?
基本的には、プロパティを設定してから離れていく方法を探しています。代わりに、私はいくつかの種類のアニメーションブロックでそのプロパティを変更するように要求するオブジェクトを呼び出すコードをラップする必要があるようです "[UIView beginAnimations:nil context:NULL]; ... [UIView commitAnimations];"
私のビューコントローラではたくさんのアニメーションブロックが終了していますが、私のビューオブジェクトでは何もありません...私はこれが事態がどのように行われているかを確認するために、何かを見落とさない。私はCocoa-Touch内のUIViewアニメーションよりはるかに遠くはないので、おそらくそれが私の問題です。
私はCALayersをよく見ていません。彼らが私をここで助けてくれるかどうかは分かりません。私の混乱のため申し訳ありません...しかし、私はUIViewのサブクラスを持っています。私はいくつかの状態を設定することが可能かどうか(fillColor = greenColorと言う)、それから "離れていく"と思っています。このuiviewは自身を描画する方法を知っていて、そのパスをgreenColorで塗りつぶしますが、その変更をアニメーション化しません。ただ瞬時に緑色に変わります。私がアニメーション化することがわかる唯一の方法は、VCのアニメーションブロックを設定することです。 – Meltemi
UIViewのレイヤーを要求することで、レイヤーが自動的にアニメーション化されるため、変更(aView.layer.backgroundColor)を行うことで、必要なものを手に入れることができます。つまり、アニメーションブロックの設定には何も問題はありません。 –
私の意見では、これは残念なことにココアタッチで避けられないMVC原則に違反しています。コントローラーは、ビューが変更されるべきとき*を決めるべきですが、ビューの責任であるため変更する必要はありません。 – adrin