2011-12-21 11 views
7

私は2つのサブビューを含むUIViewを持っています。スーパービューのフレームサイズをアニメーションで変更し、サブビューのサイズを自動サイズ変更マスクに従って変更したいと思います。予想通りサブビューの自動サイズ変更によるUIViewフレームサイズの変更のアニメーション

[UIView beginAnimations:@"Resize" context:nil]; 
[UIView setAnimationDuration:1.0]; 
CGRect frame = self.myView.frame; 
frame.size.height += 30.0; 
self.myView.frame = frame; 
[UIView commitAnimations]; 

self.myViewは、1秒以上にサイズ変更されるが、サブビューは直ちにリサイズされます。誰もがなぜこれが起こっていると私はどのようにサブビューも自分のサイズ変更をアニメーションにするかもしれない知っていますか?

私の周りのグーグルでは、contentModeプロパティで何かがあるかもしれないと思います。残念ながら、私はその物件が何をしているかについてはっきりしていません。どんな助けでも大歓迎です。

答えて

1

OK、私は次の質問への答えを読んだ後、問題を考え出した:私は、原因となったアニメーションをスケジュールした後、私は基本的にいくつかの作業をしていたAnimating a UIView frame, subview UIScrollView doesn't always animate

- 私のサブビューのそれぞれで呼び出されるlayoutSubviews自動的にそれらのビューがアニメーションの終点に配置されました。この作業が完了した後で私のアニメーションをスケジュールすることで、私は自分の問題を解決することができました。

14

[UIView commitAnimations]の後に何をしているのか尋ねたが、誰かがあなたのコードを見て正しい答えを出すのは難しいだろう。それにもかかわらず、あなたはそれを理解してうれしいです。ブロックアニメーションを使用することをお勧めします。このタイプの間違いは、完了ブロックを使用することで回避するのがはるかに簡単です。例:

[UIView animateWithDuration:1.0 
       animations:^{ 
        CGRect frame = self.myView.frame; 
        frame.size.height += 30.0; 
        self.myView.frame = frame; 
       } 
       completion:^(BOOL finished){ 
        // whatever you need to do when animations are complete 
       }]; 
+0

残念ながら、古いバージョンのiOSと互換性があるため、アニメーションがブロックされます。しかし、チップをありがとう。 – jjoelson

+1

が理にかなっています。最近の<4.xのインストールベースはかなり小さいですが。 – XJones

関連する問題