0

次の図に基づいてレイアウトされた iOS アプリのページがあります。

  • ダークグレーのボックス = ナビゲーションバー
  • 薄い灰色のボックス = UIView (プレゼンテーション用、素敵なドロップシャドウなど)
  • 黒枠 = UIView (ここでも、素敵な影、異なる背景色など)
  • 2 つのテキスト フィールド
  • ピンクのボックス = イベント後に表示される別のビュー。

レイアウト

現在、initWithFrame を使用してすべてをレイアウトし、すべてのアイテムのフレームを明示的に設定していますが、これはおそらく良くないことがわかっています (iOS 開発は初めてなので、正しい方向に向けてください)。

私が達成しようとしているのは、2番目のテキストフィールドにテキストが入力されると、ピンクのボックスが表示され、スーパービューが正しく応答し、新しいフィールドの周りにうまくレイアウトされることです.

イベント自体には問題はなく、各 UIView のフレームを順番に簡単に変更できますが、これは間違っていると感じており、いくつかのポインターが大好きです。また、最終的にはピンクのボックスをアニメーション化して、それを含むビューをアニメーション化したいと考えています。

私は自分自身を徹底的に説明したことを願っています。どうもありがとう

4

1 に答える 1

0

イベントをトリガーしてからアニメーションを実行したい場合、それは非常に簡単なことです。

- (void)myEventMethod:(id)sender {
  // Do your event stuff here
  // Animate the pink box into view
  // The below assumes the pink box is hidden behind the blackView and you'd like to drop it down 44 pixels over 0.3 seconds - hopefully correct - haven't tested
  // need to be careful as it'll move down 44px every time myEventMethod: is triggered
  [UIView animateWithDuration:0.3
                        delay:0.0
                      options:UIViewAnimationOptionCurveEaseIn
                   animations:^{
                   CGRect pinkboxEndFrame = CGRectMake(self.blackView.frame.origin.x, self.blackView.frame.origin.y + 44, self.pinkbox.frame.size.width, self.pinkbox.frame.size.height);
                   [self.pinkbox setFrame:pinkboxEndFrame];
                   }
                   completion:nil];

}

他のビューに対して実行したい他のアニメーションで上記を更新するだけです。

ビューのアニメーション化の詳細については、Appleのビュー プログラミング ガイドを参照してください。

于 2013-03-26T22:31:06.820 に答える