2012-01-06 1 views
0

UIViewはサブビューとして2つの画像を持ち、境界をyesに設定してクリップします。UIViewをどのように動かすことができますが、スーパービューに対してコンテンツの位置は変更しません。

アニメーションブロック内でUIViewを移動したいが、サブビューを親と一緒に動かさない。ビューが50ポイントを右に動かすと、第2の画像の多くが見られ、第1の画像は少なくなります。

私は手動でビューを移動し、新しいビュー位置の反対側のサブビュー位置を更新できますが、ブロック内で同じことを達成する方法を理解することはできません。

答えて

0

UIView AnimationブロックがCore Animationをフードの下で使用し、Core Animationが元のビュー/レイヤーのコピーである「プレゼンテーション」レイヤーをアニメーション化するという事実と関係があります。アニメーションは予定されていた。したがって、ブロックのアニメーション中に、プレゼンテーションレイヤの位置は変化しますが、モデルビューの位置は変更されません。

希望の効果を得るためにビューの位置を手動で更新することができます(逆方向のサブビュー位置)ので、毎秒60回アニメーションスケジュールの時間にNSTimerを作成することを検討してください(アニメーション自体の設定+アニメーションの引数として指定された特別なタイミング関数によって設定されたように)プレゼンテーションレイヤーに現在の位置を照会するだけで、基礎となるモデルを更新してそれに合わせて更新することができます。

あなたはしてアニメーションレイヤーの位置を照会することができるはずです。そして、タイマーを無効にし、あなたのアニメーションに完了ブロックを追加

yourUIView.layer.presentationLayer.frame.origin 

ビューのレイヤプロパティにアクセスする前に、あなたのプロジェクトに私はこれを行うことができます

QuartzCore.framework 

乾杯、

+0

を追加する必要がありますが、それはアニメーションブロックには本当にありませんが、それ自体が。私は手動でNSTimerでそれを行うことができますが、私はそれがないとこれを行う方法があるのだろうかと思っています。 – TigerCoding

+0

私は見るのですが、問題はサブビューの場所がスーパービューに関連しているため、「移動しない」ように見えるように余分な作業が必要です。 2つのブロックを持つことができない理由はありますか?追加のアニメーションはサブビュー用であり、最初のアニメーションと同じですが反対方向です。 – Bobjt

+0

私は同じ問題を抱えているので、あなたは答えを得ましたか? –

関連する問題