私のアプリでは、テーブルビューの高さを編集モードにしているときと変更していないとき(テーブルビューの下でコントロールを編集するためのスペースを確保するために)UITableViewの高さを動的に変更するにはどうすればいいですか?
これはどのように行うべきですか?
私のアプリでは、テーブルビューの高さを編集モードにしているときと変更していないとき(テーブルビューの下でコントロールを編集するためのスペースを確保するために)UITableViewの高さを動的に変更するにはどうすればいいですか?
これはどのように行うべきですか?
テーブルビューデリゲートのtableView:willBeginEditingRowAtIndexPath:
とtableView:didEndEditingRowAtIndexPath:
を実装して、特定の行(したがってテーブル)がいつ編集モードに入るかを知ることができます。
そこから、必要に応じて(UIViewアニメーションブロック内の)テーブルビューのframe.size.height
プロパティの値を微調整することができます。補完的なメソッドへの呼び出しを受け取る前にdelegateメソッドへの複数の呼び出しを受け取った場合は、デリゲートメソッド内でテーブルビューの全体のプロパティとしてediting
のプロパティを確認することも役立ちます。
さらに詳しい情報:
editing
プロパティtableView:willBeginEditingRowAtIndexPath:
方法(didEndEditing
は、この文書でもある)あなたがテーブルビューの境界を設定する必要があります。
CGRect tvbounds = [tableView bounds];
[tableView setBounds:CGRectMake(tvbounds.origin.x,
tvbounds.origin.y,
tvbounds.size.width,
tvbounds.size.height + 20)];
「境界」プロパティを操作すると、別のビュー内にフローティングテーブルがあると予期しない動作が発生することがあります。原点がまだ0,0であっても、高さを増やすとテーブルが上に向かって展開されることがあります。
"フレーム" プロパティには、より効果的かもしれません:
CGRect tvframe = [tableView frame];
[tableView setFrame:CGRectMake(tvframe.origin.x,
tvframe.origin.y,
tvframe.size.width,
tvframe.size.height + 20)];