0

フッターに UITextField と UIButton を含むビューに UITableView を配置するメッセージ画面を作成しようとしています。

下の写真のように、UITableView のデータが存在しないかデータが少なく、そのフッターが上に到達してはならない場合に問題が発生します。

ここに画像の説明を入力

それは下にあると思われるか、下の写真のように、少なくともフッター(UITextFieldとUIButtonを持つ)が下にあるはずのデータが少ないかのように、UITableViewを下に揃えることができます

ここに画像の説明を入力

私がコントロールする階層はこんな感じ

ここに画像の説明を入力

TextFiels とボタンを下部に保持して、データがあるかどうかを確認してください。

4

2 に答える 2

3

ほとんどの場合、すでにサブクラスであるため、UITableView内部に配置する必要はありません。UIScrollViewUITableViewUIScrollView

あなたが尋ねた質問については。テーブルテキストフィールドとボタンが本当に必要ですか?ほとんどのテキストメッセージアプリを検討するときは、メッセージを上下にスクロールするかどうかに関係なく、テキストフィールドを常に表示する必要があります。そのため、テーブルから取り出して、画面の下部のテーブルの下に配置することをお勧めします。ちなみにこれもあなたの問題を解決するでしょう。

たぶん、あなたは本当にそれをフッターとして欲しがっています。あなたはまだそれを行うことができます。タスクを実行するには2つの方法があります。

  1. すべての行の合計の高さ+フッターの高さを確認します。これが画面スペースよりも小さい場合は、フッターの高さを増やして残りのスペースを埋めます。テキストフィールド/ボタンがフッターの下部に配置されていることを確認する必要があります。

    // where 'footer' is the view of your footer
    CGFloat newFooterHeight;
    if (sumRowHeight + defaultFooterHeight < view.frame.size.height) {
        newFooterHeight = view.frame.size.height - sunRowHeight;
    } else {
        newFooterHeight = defaultFooterHeight;
    }
    
    CGRect alteredFooterFrame = footer.frame;
    footer.frame.size.height = newFooterHeight;
    footer.frame = alteredFooterFrame;
    
  2. 上記とほぼ同じことを行いますが、フッターのサイズをバッファリングする代わりに、最後の行の高さを増やします。
于 2012-12-21T16:29:05.897 に答える
0

表にテキストビューとボタンを含めないでください。それらをテーブルの兄弟としてルートビューに配置します。そうすれば、いつものように画面の下部に配置できます。

于 2012-12-21T16:28:36.250 に答える