2011-03-05 7 views
0

おい、私はまだこれに対する答えを見つけていないので、私はあなたに尋ねると思う。ココアタッチ - UIAnimationの質問

[viewOggetto setFrame:aFrame]; 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[viewOggetto.view setFrame:CGRectMake(0, 0, 320, 480)]; 
[self.view addSubview:viewOggetto.view]; 
[UIView commitAnimations]; 

これは、ビューが特定の位置に表示され、その後フルスクリーンになる単純なアニメーションです。 私の質問は、ビューのコンテンツをアニメーションにも従うにはどうすればいいですか? これで、ビューフレームが正しくアニメーション化されましたが、ビュー内のすべてが瞬時にフルスクリーン表示されます。

ありがとうございました。

+0

「aFrame」は私が慣れていない方法です。 '[viewOggetto setFrame:aFrame];'を意味するのではないですか? –

+0

Oggettoはイタリア語ですか?英語とイタリア語を混ぜるのではなく、あなたの変数に英語の名前を付けるのが良いと思いませんか? –

+0

あなたの最初のコメントについては正しいですが、私が意味することは[viewOggetto setFrame:aFrame]です。また、Oggettoはイタリアの名前ですが、私が作業している文脈では必須です。 – Lorenzo

答えて

0

しかし、どのviewOggettoが正確ですか?それがUIViewの場合、なぜviewOggetto.viewを呼び出すのですか?

これはUIViewControllerですか?それはUIViewのは、ちょうどすべての "viewOggetto.view" コード

で ".view" を削除するかどう

[self.view addSubview:viewOggetto.view]; // you need to have it before to animate it 

// initial state of the animation: 
[viewOggetto.view setFrame:CGRectMake(160, 240, 1, 1)]; // zoom from center 
// viewOggetto.view.alpha = 0; // eventually to add a fadeIn animation 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
// ending state of animation: 
// viewOggetto.view.alpha = 1; // restore to 1 to eventually to add a fadeIn animation 
[viewOggetto.view setFrame:CGRectMake(0, 0, 320, 480)]; 

[UIView commitAnimations]; 

: あなたが両方の呼び出し:

[viewOggetto setFrame:aFrame]; 
[viewOggetto.view setFrame:aFrame]; 

を、それはのUIViewControllerだと仮定すると、この/ PROVAのCOSI」を試します

ciao、 luca

+0

grazie Luca。投稿したコードを試しましたが、何も変わっていません。私はまだフレームを正しくアニメーション化しますが、コンテンツはアニメーション中にそれに応じてリサイズされません。たぶん問題は、NIBファイルを使ってviewOggettoを初期化していることでしょうか? – Lorenzo

2

瞬時に全画面表示されるのではなく、何をしたいのかが完全にはっきりしていません。あなたはそれが消えたいと思っていますか?サブビューのalphaプロパティを0に設定し、アニメーションを開始する前にself.viewに追加します。次に、アニメーション内のalphaプロパティを1に設定します。

+0

Nope。私は最初に小さなフレームを設定しました:[viewOggetto aFrame];私は0.5秒で全画面表示にしたいと思っています。しかし、私が投稿したコードでは、ビューのフレームが正しく動作するようになりましたが、ビューのコンテンツはこの「ズーム」アニメーションに従わず、ちょうどフルスクリーンになります。私はどのようにしてコンテンツをアニメーションに従わせることができるのだろうと思っています。 – Lorenzo

+0

アニメーションを開始する前に、最初のフレームでサブビューを追加します。 – Jim

+0

申し訳ありませんが、私は自分のコードを間違って書いています。最初の指示は[viewOggetto setFrame:aFrame];(編集済み)でした。たぶんあなたは私が最初に何を意味したのか理解しているかもしれません。 – Lorenzo

0

ジムの答えに追加したいだけです。 UIViewアニメーションは、あるコンテキストから別のコンテキストにUIViewをアニメーション化します。文脈が[UIView beginAnimations:nil context:NULL];の前に存在しない場合、下側の効果が起こります。ビューがサブビューに追加されていない場合、コンテキストは存在しません。

+0

コードを編集しました。最初の行は[viewOggetto setFrame:aFrame]とします。 – Lorenzo

+0

それは何も変更されません。 beginAnimationを呼び出すときに画面に表示されていない場合、アニメーション化することはできません。 beginAnimationを呼び出すと、ビューを画面に追加しています – Rudiger

+0

実際にアニメーションが機能しています。私の問題は、ビューのフレームだけがアニメーションの影響を受けることです。ビュー内のもの(UILabelsなど)は、アニメーション中に画面上で放されます。私はどのようにコンテンツをビューのフレームに応じてアニメーション化することができるのだろうかと思っていました。 – Lorenzo