0

タッチすると、ビューをサムネイルから全画面表示にアニメーション化しようとしています。ビューがサムネイル モードの場合、UITableView.tableFooterView のサブビューです。フルスクリーンにアニメーション化するときは、制約を更新する前にビューをコントローラーのルート ビューに移動します。テーブルビューがサブビューをクリップするため、これを行います。

これは完全に機能していますが、リバース アニメーションを実行しようとすると、それほど簡単ではありません。制約を更新する前に、まずサムネイル ビューを UITableView.tableFooterView のサブビューに戻す必要があります。次に、制約を元に戻します (基本的に、元の場所に設定します)。これは機能しますが、ビューが UITableView.tableFooterView に戻されるとすぐに UITableView によって再びクリップされ、アニメーションがすべてのテーブルビュー装飾の背後に部分的に隠されるため、アニメーションは正しく見えません!

私の考えは、制約の計算されたフレームを取得し、昔ながらのフレームアニメーションを実行してから、制約をインストールすることです。

それらの制約を実際にインストールせずに、フレームが何であるかという制約の配列を指定して、レイアウトシステムに尋ねる既知の方法はありますか?

ありがとう。

4

1 に答える 1

1

そんな方法はないと思います。

定義する制約 ( NSLayoutConstraint) だけが制約ではないことに注意してください。その他の制約は、ビューのプロパティによって定義されます (たとえば、固有のコンテンツ サイズ、ハグの優先順位など)。

これは、自動レイアウトではなく自動サイズ変更でうまくいくと思います。

別の解決策は、テーブル フッターで非表示のプレースホルダー ビューを使用することです。ビューをフッターに戻すときは、プレースホルダーのフレームを要求するだけです。

于 2013-07-15T15:49:10.103 に答える