自動サイズ変更は簡単です。Webページのように考えてください。Webコンテンツは「フロー」し、ブラウザウィンドウが提供するのと同じくらいのスペースを占有します。自動サイズ変更も同じです。UIKitにコンテンツをさまざまなフレームサイズに調整する方法を指示する「マスク」があります。
したがって、たとえば、ビューを右側から縮小または拡大する場合(たとえば、テーブルセルのように左揃えのコンテンツの場合)、次のようにマスクを設定します。
cell.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;
自動サイズ変更もビットごとのOR演算のように機能するため、(上記のように)右から拡大するだけでなく、下からも拡大する場合は、2つを「OR」します。
cell.autoresizingMask = (UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin);
これがうまくいかない場合(たとえば、画面に配置しすぎて特定の要素を削除する必要がある場合、またはデフォルトとは異なる方法でアニメーション化する場合)、既存の方法の使用を検討してくださいUITableViewCellでの呼び出し。ドキュメントから:
- (void)willTransitionToState:(UITableViewCellStateMask)state
これは、セルが状態を変更する直前(通常->編集またはその他)に呼び出されるため、アニメーションを編集状態に処理するために特別なことを行う必要がある場合は、これを行う機会です。ドキュメントの状態:
UITableViewCellのサブクラスは、このメソッドを実装して、セルが状態を変更しているときにセルへの追加の変更をアニメーション化できます。UITableViewCellは、セルが通常の状態(デフォルト)から編集モードなどの状態間で遷移するたびにこのメソッドを呼び出します。カスタムセルは、新しい状態で表示される新しいビューを設定および配置できます。次に、セルはlayoutSubviewsメッセージ(UIView)を受信します。このメッセージで、これらの新しいビューを新しい状態の最終的な場所に配置できます。このメソッドをオーバーライドする場合、サブクラスは常にsuperを呼び出す必要があります。このメソッドをオーバーライドします。